我认为这个问题将适用于其他框架,这些框架有一些插件/组件生态系统,依赖于特定的构建工具(使用JSX来响应组件,等等)。Vue只是我的用例。
我以单个.vue文件的形式编写了几个Vue组件,并将其发布到NPM。这些组件的package.json没有列出任何依赖项,因为它们本身是要在使用webpack、vue-loader、sass-loader等这是这样一个组件的示例。的父项目中工作的。
我不确定如何最好地声明这些组件依赖于父包,并且提到了构建工具。我不相信devDependencies是正确的位置,因为组件本身没有依赖于这些步骤的开发步骤。peerDependencies似乎更合适,但我也不相信这与我正在努力实现的目标相匹配。
纵观真棒-vue存储库上的许多组件,我看不到peerDependencies的任何使用,而devDependencies似乎与特定组件本身的开发相关。
编写这些组件的正确方法是什么?就好像我需要"peerDevDependencies“之类的东西。
发布于 2017-04-10 10:34:03
不幸的是,大多数组件已经被编译好了。
在我看来,分发组件的最好方法是以main的形式编写组件的原始.vue文件。
您不应该指定使用任何特定的工具,拿起您的包的开发人员应该可以自由使用他们想要的工具,不管是Browserify还是Rollup (或者Webpack)。原始的.vue格式允许他们用他们想要的任何工具编译.vue组件,并使用他们想要的任何Vue版本(当然,在一定范围内)。
此外,我喜欢做的是让用户可以立即使用组件,即使在浏览器中也是如此,只将Vue作为<script>依赖项。为此,您必须编译它,是的,将Vue指定为peerDependency,因为它在页面中是必需的。
您可以在package.json中放置元信息,告诉CDN在浏览器中获取编译后的版本,这非常方便,因此用户只需指定包的名称,而不必担心文件名或版本。
发布于 2017-04-15 15:28:24
仅作为Vue.js组件的使用者,我认为将构建依赖项指定为peerDependencies是最好的解决方案。您使用的是一个相当标准的构建管道,但我认为指定它们是很重要的。这些不是严格意义上的devDependencies或依赖关系,取决于最终用户将在何处编译它们。
发布于 2017-04-11 23:41:48
我建议您对原始vue文件在package.json上使用package.json属性,将"main"用作编译文件。module是一个正在标准化的物业,webpack和罗琳已经了解它了。
有关更多信息,请参见s购买多平台npm软件包文章。
https://stackoverflow.com/questions/42965304
复制相似问题