【问题标题】:Webpack keeps including node_modules from dependencies when they are already in main vendor file当它们已经在主供应商文件中时,Webpack 会继续包含依赖项中的 node_modules
【发布时间】:2017-08-21 22:03:19
【问题描述】:

我正在使用自制组件库在我的项目之间共享组件。问题是,即使在使用 webpackAuthoring libraries 指南之后,它仍然在我的主构建中包含这些依赖项,我不知道这是由什么设置引起的......

构建分析(捆绑我的应用时)

在这里您可以看到node_moduleswizer-components/node_modules。包括react-dom两次(和其他)

构建分析(组件)

如您所见,这里没有捆绑任何 node_modules...

设置文件

因为我找不到问题所在,所以我创建了gists of my config files

  • webpack.config.js(组件库)
  • webpack.config.production.js(应用程序)

设置

就像信息一样,我正在使用带有 lernanpm link 依赖项的 monorepo 设置(wizer-components),而无需将其作为模块推送到 npm。这可能是 webpack 认为需要重新添加 react(和其他)的问题吗?

【问题讨论】:

    标签: npm webpack lerna


    【解决方案1】:

    在尝试完成这项工作总共 4 天后(在我提出问题之前就这样做了),我设法解决了它(终于)!

    问题在于 lerna / NPM 链接和依赖关系解析,请参阅此答案底部的方便链接。

    我通过以下步骤修复了它:

    1. wizer-components(我的组件库)package.json 文件中的dependenciesreactreact-dom)移动到peerDependencies
    2. 删除我所有的 node_modules 文件夹(应用程序和组件库)
    3. 运行$ lerna bootstrap重新下载我的node_modules
    4. 删除组件库的构建过程(我在构建应用时构建这些)
    5. 在这些关键领域更改我的webpack.config.production.js

    (做了一张图片,因为它不会在这里格式化-_-

    有用的链接(也可以查看 cmets):

    【讨论】:

    • 永远记住,当 webpack 搜索要打包的 js 文件时,它会默认搜索你项目中的 all 文件夹,除非你明确告诉它包含或排除某些路径。随意将其标记为已解决。 :)
    • 伙计,你在这里救了我的命。您的修复帮助我解决了一个完全不同的问题(修复了 babel 没有转换预构建依赖项的问题)——我的修复是从 babel 规则中删除了 node_modules 的排除(可能不相关,尽管它引发了这个想法)。但我真正想为你投票的是你诚实地花 4 天时间解决问题。做得好。我怀疑大多数人都会低估这一点。更多的人可能已经放弃了。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2018-10-23
    • 2017-03-19
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多