11ty.ts(轮胎支持)
类型支持 十一号 使用 defineConfig 包装 这个模块可以降入您的 .eleventy.js 配置文件,并将为整个11ty API提供类型支持,JSDoc注释描述和文件链接引用.
为什么?
现在假设类型支持,当模块不能提供这种基本能力时,它会给生活带来困难,对原本好的项目(如"十一")反映不佳. 《十一一》背后的团队已经浮出水面, 上次我积极研究这些问题时,显然和相当明显地看到,那些讨论类型支持或就此开展工作的人对这一主题(mo)不是很熟悉.
参考资料
- https://github.com/11ty/eleventy/issues/2317 互联网档案馆的存檔,存档日期2014-12-21
- https://github.com/11ty/eleventy/pull/2091 (英语)
- https://github.com/11ty/eleventy/pull/720 (英语)
- https://github.com/11ty/eleventy/issues/814 (英语)
安装
模块要求 @ 11ty/ eleventy (英语) 被安装在旁边.
pnpm add 11ty.ts @11ty/eleventy -D
使用量
递给 module.exports 内 .eleventy.js 或者说 .eleventy.cjs 配置文件 .
const eleventy = require("11ty.ts");
module.exports = eleventy(function(eleventyConfig) {
config.addPlugin()
return {
htmlTemplateEngine: 'liquid',
passthroughFileCopy: false,
pathPrefix: '',
templateFormats: [
'liquid',
'json',
'md',
'css',
'html',
'yaml'
],
dir: {
input: 'site',
output: 'public',
includes: 'views/include',
layouts: 'views/layouts',
data: 'data'
}
}
});
除默认导出外,您还可能选择使用 defineConfig 已命名导出 :
const { defineConfig } = require('11ty.ts');
module.exports = defineConfig(eleventyConfig => {
// {}
})
自动键入插件
如果插件参数的策略结构在索引中应用选项,在分发包中提供打字功能的11个插件将有效 1 辩论顺序。 此模块中曝光的类型的公用设施将转换插件的函数参数为 a 二联 然后引用第二个参数,该参数被假定为插件选项。 这与优雅的方法相去甚远,但由于"十一"消化插件的方式,这个(目前)似乎是我提出的唯一可行的方法.
示例
为了简洁起见 我们假设你安装了一个插件 从国家防范机制的登记册中调用 11ty-plugin-example 而这个(假)插件在分发包中附带以下类型声明.
// Assuming the plugins uses this argument order
export function pluginName(eleventyConfig, options: {
foo: string;
bar: number;
baz: boolean;
}) {
// ...
}
这是相当典型的,坚持上述的插件会自动被打入. 使用 eleventyConfig.addPlugin 方法将简单地引用参数 options 通过tuple,所以在你的 .eleventy.js 文件,在进行下列工作时将应用补全:
const { defineConfig } = require('11ty.ts');
const { pluginName } = require('11ty-plugin-example');
module.exports = defineConfig(eleventyConfig => {
eleventyConfig.addPlugin(pluginName, {
// Auto-typing will occur and intellisense completes
// foo, bar and baz options.
})
})