Stencil配置copy报错:copy属性不存在于StencilConfig类型
报错原因
Stencil 的静态资源复制配置项 copy 不属于顶层 StencilConfig 的合法属性,从Stencil v2及之后的版本开始,所有文件复制规则必须绑定到具体的输出目标(outputTargets)上,直接在配置根节点写copy就会触发类型校验报错。
正确配置方法
把你写的copy规则挪到需要输出i18n资源的对应输出目标内部即可,常见输出目标的配置示例如下:
import { Config } from '@stencil/core'; export const config: Config = { namespace: 'components', plugins: [ // 原有插件配置保持不变 ], outputTargets: [ // 本地调试用的www站点输出 { type: 'www', // 把copy配置放在对应outputTarget内部 copy: [ { src: "**/*.i18n.*.json", dest: "i18n", warn: true } ], // 其余www相关配置保持不变 }, // 生产环境组件库dist输出 { type: 'dist', copy: [ { src: "**/*.i18n.*.json", dest: "i18n", warn: true } ] } // 如果使用了dist-custom-elements、dist-hydrate-script等其他输出目标,需要在对应目标内单独加copy配置 ], };
配置说明
- 每个输出目标的copy规则独立生效,你需要在哪个输出目录访问i18n文件,就给对应outputTarget加规则,不需要的目标无需配置
- 路径规则:
src是相对于项目源码目录(默认是./src)的glob匹配路径,dest是相对于当前输出目标的输出目录的路径,比如上面www目标的配置,最终会把匹配到的i18n文件输出到www/i18n目录下 - 如果i18n文件不在src目录下,比如存放在根目录的
locales文件夹,需要调整src路径为"../locales/**/*.i18n.*.json" - 开启
warn: true后,如果构建时没有匹配到对应文件,控制台会输出警告,方便排查路径写漏的问题 - 配置完成后重新执行
stencil build,即可在对应输出目录找到复制好的i18n资源文件
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

