我们有几个网站,每个都在自己的项目中,我们希望使用vue.js将它们全部迁移到。每个网站都有自己的目录
.vue
然后使用Webpack捆绑的文件。我们有一个Webpack配置,可以将.vue文件、捆绑包、lints和管道全部转换到babel中,并且工作正常。
但是,由于我们已经移动了几个星期,我们注意到有几个组件和核心JavaScript文件非常相似,理想情况下,我们希望将它们拉到一个由Vue组件和函数组成的共享库中。
我们提取了几个
VUE
放在网站旁边的一个文件夹中,并将它们作为基本的NPM模块与自己的模块放在一起。
package.json
,并使用npm文件include包含它们,因此
包装袋
看起来就像:
"vue-shared": "file:../CommonJavascript/Vue"
. 现在,当我们尝试使用Webpack构建包时,我们得到错误:
../commonjavascript/vue/index.js中出错
模块生成失败(来自./node_modules/eslint loader/index.js):
错误:加载插件react失败:找不到模块“eslint plugin react”
我不确定这个错误是从哪里来的,因为我们没有在任何地方使用react,而且在我们移出文件之前,它看起来非常高兴地构建了fine。目前,共享模块中唯一的依赖项是moment,它只包含4个
VUE
和一个基本的包装器来打包它们:
import button from 'Button.vue'
import loading from 'Loading.vue'
import modal from 'Modal.vue'
import progressBar from 'ProgressBar.vue'
export default {
button,
loading,
modal,
progressBar,
}
但是,我很好奇,所以我决定添加这个包(即使我们不需要它),看看它是否可以解决问题,但是我得到了一个新的错误:
../commonjavascript/vue/index.js中出错
模块生成失败(来自./node_modules/babel loader/lib/index.js):
referenceerror:在0处的“base”中指定了未知的插件“transform runtime”,试图相对于“c:\projects\tmo\code\commonjavascript\vue”进行解析。
现在,这一点更加合理了,我们确实在主项目上使用了babel运行时转换,但是共享项目中的任何东西都不需要它,即使它
是
当然,它包含在主要项目中的事实意味着它仍然应该建造。
在一定程度上,我似乎不理解NPM解决依赖关系的方式。它现在似乎试图通过查看共享文件项目来解决一些依赖关系,我不知道为什么。我也不知道这种对eslint插件反应的奇怪依赖来自何处。
所以我想这是一个多部分的问题。NPM试图解决依赖关系的方式是什么?我通过移动
VUE
文件到一个单独的项目,包装成一个模块,并在主项目中要求它?如果没有,那么什么是拥有这样的共享依赖关系的最佳方法呢?