正确的方法来创作依赖父构建工具的Vue组件

时间:2017-03-23 00:51:43

标签: javascript npm vue.js vuejs2 vue-component

  

我认为这个问题适用于其他框架,这些框架有一些依赖于特定构建工具(使用JSX的React组件等)的插件/组件生态系统。 Vue只是我的用例。

我以单.vue个文件的形式创作了几个Vue组件,这些文件发布到NPM。这些组件的package.json没有列出任何依赖项,因为它们本身旨在在使用webpack,vue-loader,sass-loader等的父项目中运行。This is an example of one such component

我不确定声明这些组件依赖于具有所述构建工具的父包的最佳方式。我不相信devDependencies是他们的正确位置,因为组件本身没有依赖于这些的开发步骤。 peerDependencies似乎更合适,但我并不相信这与我想要实现的目标完全匹配。

查看awesome-vue存储库中的许多组件,我看不到peerDependencies的使用情况和devDependencies似乎与特定组件本身的开发相关。

创作这些组件的正确方法是什么?这几乎就像我需要像#34; peerDevDependencies"。

3 个答案:

答案 0 :(得分:1)

遗憾的是,大多数组件已经编译好了。

在我看来,分发组件的最佳方法是将main写入组件的原始.vue文件。

您不应指定使用任何特定工具,选择您的软件包的开发人员应该可以自由使用他们想要的工具,无论是Browserify还是Rollup(或Webpack)。原始.vue格式允许他们使用他们想要的任何工具编译.vue组件并使用他们想要的任何Vue版本(当然在一定范围内)。

此外,我喜欢的是让用户可以直接使用该组件,即使在浏览器中也是如此,只有Vue作为<script>依赖项。为此你必须编译它,是的,在页面中需要它的意义上指定Vue作为peerDependency

您可以将元信息放在package.json中告诉CDN在浏览器内部获取已编译的版本,这非常方便,因此用户只需指定包的名称而无需担心文件名或版本

答案 1 :(得分:0)

仅作为Vue.js组件的使用者,我认为将构建依赖关系指定为peerDependencies是最佳解决方案。您使用的是非常标准的构建管道,但我认为指定它们非常重要。这些不是严格的devDependencies或依赖项,具体取决于最终用户将在何处编译。

答案 2 :(得分:-1)

我建议您在"module"上使用package.json属性作为原始vue文件,将"main"作为编译文件使用module[^xyz]是一个标准化的属性,webpack和汇总已经理解了它。

有关详细信息,请参阅s etting up multiplatform npm packages article