为什么webpack包含node_modules的dependency?

u7up0aaq  于 12个月前  发布在  Webpack
关注(0)|答案(3)|浏览(243)

我在同一个目录下有两个模块,都是由lernajs管理的。其中一个是其他模块包含的库。它们都是在webpack库创作之后由webpack打包的。
但是,当我在app目录中启动webpack时,这个过程包括了app中所有的library/node_modules依赖项,例如vue.js。在library中,vue是“devDependency”,而在app中是“dependencies”。这意味着navigator中有两个Vue上下文。有人知道为什么吗?
谢谢.

r8uurelv

r8uurelv1#

您需要添加一个别名:

module.exports = {
...
....
},
resolve: {
    modules: ["node_modules",
    alias: {
        'vue$': 'vue/dist/vue',
        'jquery': 'jquery/dist/jquery.min.js'
    }
},
...

字符串

pxy2qtax

pxy2qtax2#

感谢@evocateur
“Node在需要时解析符号链接,这意味着单例库(如React和Vue)将中断。您需要添加resolve.alias webpack配置,以便它始终选择“根”node_modules包。”
在resolve.alias中放入webpack以下内容可以很好地工作:
vue: path.resolve(__dirname, './node_modules/vue/')

xxe27gdn

xxe27gdn3#

确保库和应用的webpack配置都设置正确。请特别注意库的webpack配置中的外部配置。此配置允许您指定不应与库捆绑的依赖项。外部化依赖项:
在库的webpack配置中,将Vue.js标记为外部依赖项。这意味着当库捆绑时,它不会包含Vue.js,并且它将期望应用提供它。

// In your library's webpack.config.js
module.exports = {
  // ...
  externals: {
    vue: 'Vue', // Assuming Vue is available as a global variable
  },
};

字符串

相关问题