如何拆封没有本地依赖性NPM模块(How to shrinkwrap npm modules wit

2019-10-18 03:03发布

我试图保持的package.json与节点模块的依赖关系的列表。 当我打电话NPM安装安装节点modules.and在我的应用程序生成的文件夹吧。 我把故宫拆封。 但是,这产生本地节点模块的依赖

  "dependencies": {
"async": {
  "version": "0.2.5",
  "from": "async@0.2.5",
  "resolved": "https://registry.npmjs.org/async/-/async-0.2.5.tgz"
},

当我上传应用程序到服务器appfog它可以从NPM-shrinkwrap.json安装。 因此,理想的情况是我想删除节点模块文件夹,只要传递shrinkwrap.json文件。 但是它有这个“从”。 我在过去产生的拆封和它没有“从”字段在那里。 如何生成不“从” /我就可以得到一个的package.json文件拆封。 所以我的应用程序将更为精简。 我可以在全球范围保持所有的节点模块。

谢谢

Answer 1:

我有点被你的问题混淆。

拆封不安装,包,上传或做任何你的依赖。

它所做的就是扫描你的安装 node_modules并记录版本(递归)到文件中。 调用npm install后定义文件将成为可重复的,这是一个软件工程的原则 。

“从”被引入了几个月回来。 在npm shrinkwrap命令似乎将其设置为从安装模块的URL。 这可能是便携性。 npm install的是模块名,咨询注册表(其网址是配置为npm config设置),并安装它。 我可以采取同样package.jsonnpm-shrinkwrap.json ,放在另外的机器上,并且从理论上得到了不同的结果,如果这台机器的npm config设置,它指向一个不同的注册表。 因此,在拆封文件中嵌入解决URL增加了重复性的额外水平npm install

看到故宫配置手册页设置注册表参数的详细信息。

据GitHub上NPM问题3145,“从”设置已知会导致1.2.x的预NPM系统的向后兼容性问题。 升级是唯一的解决方法。

https://github.com/isaacs/npm/issues/3145



Answer 2:

我认为你正在寻找shrinkpack: https://www.npmjs.com/package/shrinkpack

从文档:

Shrinkpack通过维护项目中的node_shrinkwrap目录,包含NPM从下载安装完全相同的压缩包补充了故宫拆封命令https://registry.npmjs.org 。

故宫的其余部分的安装过程是完全一样的。 唯一的区别是,安装和建设项目时没有任何网络活动是必要的。 该node_shrinkwrap目录可以在编辑器中被忽略(就像与node_modules目录执行)而是签入源代码控制。



文章来源: How to shrinkwrap npm modules without local dependencies