编写自定义组件时,最好直接发布.vue
文件还是使用webpack / other-bundling-tools发布编译版本?
奖励:是否有关于发布自定义组件时要遵循的惯例的官方文档?
编辑:这两种方法的优点和缺点是什么?答案 0 :(得分:4)
我已经发布了一些开源项目,根据经验,我可以说最好将代码发布 - 或者更确切地说,设置主要入口点 - 作为已编译的可分发项,原因如下:
首先,通过输出UMD模块,您将创建一个适用于所有环境(webpack,browserify,CDN,AMD)的可分发版,它就像在webpack配置中添加以下内容一样简单:
output: {
...
library: 'MyPackageName',
libraryTarget: 'umd',
umdNamedDefine: true
},
其次,大多数使用webpack的开发人员会通过执行以下操作来排除babel-loader
编译其node_modules
文件夹中的脚本:
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
}
因此,如果开发人员需要自己编译代码,并且项目中的任何内容都不是使用.vue
的{{1}}文件(例如mixin),那么您需要告诉开发人员将ES2015
应用于babel-loader
配置中的项目文件夹。
对于必须编译项目的webpack
开发人员,您需要将browserify
和vueify
作为转换添加到babelify
(他们实际上无法设置此项他们自己)并告诉那些开发人员那些是依赖项并让他们设置一个合适的package.json
文件。
所有这些设置都可能是.babelrc
的噩梦,许多人对他们的构建过程知之甚少,所以不会知道排除,他们不会知道变换,他们只会得到一堆错误并删除您的包或在您的仓库上产生问题。
这仅适用于两个最常见的构建过程,您仍然可能需要devs
并且您仍然希望允许使用CDN
模块的人使用您的软件包,因此UMD模块是要走的路。
尽管如此,您仍然应该自己分发AMD
文件,如果他们有高级配置要求,也允许开发人员编译您的项目。