【发布时间】:2016-10-20 18:12:01
【问题描述】:
我有这三个本地 npm 包:C:\projects\A、C:\projects\B 和 C:\projects\main。 Main 是使用 Webpack 构建的 React 应用程序。 Main 依赖于A 和B,同样A 依赖于B。我们有自己的“全局”包管理器,可以保证包位于同一个父文件夹中。
我想适合这些:
Node 的(和 webpack 的)
require将解析本地包我不需要在每次更改
A或B时在Main中输入npm install
我在Main 的package.json 中做到了这一点:
....
"dependencies": {
"A": "file:../A",
"B": "file:../B",
"react": ...
.........
但是遇到了奇怪的问题:npm 没有安装A 和B 的node_modules 中的所有包,所以Webpack 构建失败。而且我每次都需要运行npm install。
我用谷歌搜索发现linklocal,它将所有本地包替换为符号链接。但是遇到了另一个问题:
linklocal 不会安装链接依赖项的依赖项,因此您通常会安装两次链接依赖项的依赖项:一次在 npm 安装期间,然后在 linklocal 之后再次安装
所以我在postinstall 脚本中再次运行linklocal 和npm install。但是 npm@3 没有对符号链接文件夹做任何事情:
npm WARN update-linked node_modules/A needs updating to 1.0.0 from 1.0.0 but we can't, as it's a symlink
然后我决定修改postinstall 以转到每个符号链接模块并从那里运行npm install。乍一看,它运行良好:安装运行良好,以及 webpack 捆绑。但是 Webpack 开始捆绑两个 React 副本(这是被禁止的)。
如何正确配置我的包?
【问题讨论】:
标签: node.js npm webpack symlink npm-install