前两天发布了一个包上去,但是现在换了电脑。想弄下来修改了再重新发布。现在的方法是 npm i <package_name> 来获取,但是这样会生成一个 node_modules 目录,并且里面还把其它依赖混合在一起。我觉得应该有一个命令是单独像发布的时候的文件结构吧——依赖全在项目的 node_modules而不是全部都在一个 node_modules 里面,看了一下npm 文档也没有找到。我该怎么操作呢?
前两天发布了一个包上去,但是现在换了电脑。想弄下来修改了再重新发布。现在的方法是 npm i <package_name> 来获取,但是这样会生成一个 node_modules 目录,并且里面还把其它依赖混合在一起。我觉得应该有一个命令是单独像发布的时候的文件结构吧——依赖全在项目的 node_modules而不是全部都在一个 node_modules 里面,看了一下npm 文档也没有找到。我该怎么操作呢?
2 回答1.1k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答704 阅读✓ 已解决
一般发布包的时候,最佳实践是提供一个 repository 字段。如果你想在另一台机器上更新这个包,那么最直接的方式肯定是是从 repository 目录下拉源码然后继续维护。
直接 npm install 时,当前包和其余依赖混杂在同一个 node_modules 目录中的行为,其实是 npm 3 后提供的【拍扁依赖】的优化行为,这是符合预期的。比如你的包 A 依赖了 B,而 A 和 B 都依赖了 lodash,那么 lodash 就只会在最顶层安装一次,而不是完全根据依赖树重复安装,从而节约空间。
虽然 npm 有这种优化行为,但其实这完全不影响通过 npm install 在另一台机器上恢复原有的包内容。所安装的包虽然依赖被【拍扁】了,但其实包内容是和之前发布时完全一致且可用的。