@
wlwood @
janxin @
maichael 其实可以的 多个项目其实可以共享全部或者部分 node_modules
node 会自动向上层目录寻找 所以如果有公共的依赖 而且版本一致 可以提取到上层目录的 node_modules 实现共享
或者 如果你这些项目的依赖完全一致 可以把其中一个 node_modules 放到上层目录 然后把其他的删掉 或者 symlink
如果你觉得太麻烦 有工具会自动帮你弄:yarn workspace
它会自动解决多个项目的相互依赖 同时提取公共的部分到同一个 node_modules
其他的项目会 symlink 到这个 node_modules 里面的依赖
@
chenstack 不一定要 symlink 其实 node 会自动往上层目录找 另外 yarn workspace 最适合这种情况 会自动 symlink
@
beginor 放全局目录也不一定是好事 如果你项目多 全局目录会非常大
而且 如果你要删除一些项目的时候 全局目录就没办法清理 只会越来越大 而且你还不敢随便删除
@
wlwood 其实你说的不完全正确 npm 有 cache 的 如果有相同的依赖不会重复下载 但是由于每个项目是独立的 node_modules 自然会有独立的拷贝
但是我觉得从部署的角度而言 独立 node_modules 其实比较方便和干净
你只要把项目连同 node_modules 一起打包和拷贝 只要 OS 和 Node 相同 就可以直接跑起来
而且删除的时候 也很干净 不会在 global 留下不再需要的包
另外同一个项目下面 如果版本不同 NPM 倾向保留多个版本 这个是 node 社区的问题
不同版本(一般除了_._.x 修正版本)之间往往不兼容 而且也有可能会有包锁定依赖版本
NPM 现在的方法 其实是比较省事的 如果要 merge 和 flatten 反而会造成很多问题
目前新版本的 NPM 和 Yarn 就会做一些 merge 和 flatten 结果每次更新依赖的时候 会造成一些问题