我们有几个网站,每个网站都在其自己的项目中,并且我们希望将它们全部迁移到使用Vue.js。每个网站都有其自己的目录,其中包含.vue
个文件,然后使用Webpack将它们捆绑在一起。我们有一个Webpack配置,可以将.vue文件,bundle,lint和管道通过babel转换成所有文件,并且运行良好。
但是,既然我们已经进行了数周的工作,我们已经注意到有许多组件和核心javascript文件非常相似,并且理想情况下,我们希望将它们引入vue组件和功能的共享库中。
我们已经将几个.vue
提取到网站旁边的文件夹中,并将它们作为具有自己的package.json
的基本npm模块放在一起,并使用npm文件include包含它们,因此在{ {1}}看起来像:package.json
。现在,当我们尝试使用Webpack构建捆绑包时,会出现错误:
../ CommonJavascript / Vue / index.js中的错误 模块构建失败(来自./node_modules/eslint-loader/index.js): 错误:无法加载插件反应:找不到模块“ eslint-plugin-react”
我不确定该错误的出处,因为我们没有在任何地方使用react,并且在将文件移出之前看起来很高兴可以很好地构建。目前,共享模块中唯一的依赖关系是moment,它仅包含4个"vue-shared": "file:../CommonJavascript/Vue"
,以及将它们捆绑在一起的基本包装器:
.vue
但是,我很好奇,所以我决定添加软件包(即使我们不需要它)以查看它是否可以解决问题,但随后出现一个新错误:
../ CommonJavascript / Vue / index.js中的错误 模块构建失败(来自./node_modules/babel-loader/lib/index.js): ReferenceError:在“ base”中指定为0的未知插件“ transform-runtime”,试图相对于“ C:\ Projects \ Tmo \ Code \ CommonJavascript \ Vue”进行解析
现在,有一点意义了,我们确实在主项目上使用了babel运行时转换,但是共享项目中的任何内容都不需要它,即使它是 ,当然,它包含在主项目中的事实意味着它仍然应该构建。
部分地,似乎我只是不了解npm解决依赖关系的方式。它似乎正在尝试通过查看共享文件项目来解决一些依赖性,但我不知道为什么。而且我也不知道这种对eslint-plugin-react的奇怪依赖来自哪里。
所以我想这是一个多部分的问题。 npm尝试解决依赖关系的方式是什么?通过将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,
}
文件移动到一个单独的项目中,并将其包装为一个模块并在主项目中需要它,我是否做对了?否则,拥有这样的共享依赖关系的最佳方法是什么?
答案 0 :(得分:0)
这是由两个独立的问题共同引起的:
import button from './Button.vue'
(请注意对文件路径的更改).eslintrc
文件,该文件引用了我的用户文件夹(c:\ users \ <用户名>)。如果找不到配置文件,Eslint将使用它作为默认值(由于上述路径问题,它在共享文件上方查找,因此无法找到该配置文件)我们已经决定将对这些文件使用git子模块