npm 导下自己的包

前两天发布了一个包上去,但是现在换了电脑。想弄下来修改了再重新发布。现在的方法是 npm i <package_name> 来获取,但是这样会生成一个 node_modules 目录,并且里面还把其它依赖混合在一起。我觉得应该有一个命令是单独像发布的时候的文件结构吧——依赖全在项目的 node_modules而不是全部都在一个 node_modules 里面,看了一下npm 文档也没有找到。我该怎么操作呢?

阅读 2.9k
1 个回答

一般发布包的时候,最佳实践是提供一个 repository 字段。如果你想在另一台机器上更新这个包,那么最直接的方式肯定是是从 repository 目录下拉源码然后继续维护。

直接 npm install 时,当前包和其余依赖混杂在同一个 node_modules 目录中的行为,其实是 npm 3 后提供的【拍扁依赖】的优化行为,这是符合预期的。比如你的包 A 依赖了 B,而 A 和 B 都依赖了 lodash,那么 lodash 就只会在最顶层安装一次,而不是完全根据依赖树重复安装,从而节约空间。

虽然 npm 有这种优化行为,但其实这完全不影响通过 npm install 在另一台机器上恢复原有的包内容。所安装的包虽然依赖被【拍扁】了,但其实包内容是和之前发布时完全一致且可用的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进