问题标签 [npm-shrinkwrap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
133 浏览

javascript - 如何将新创建的节点模块保存到我的 package.json?

我将新功能作为节点模块。

当然,当我收缩包装时,我会收到如下错误消息:

有没有一种快速的方法可以将新创建​​的无关包保存到package.json?

0 投票
0 回答
112 浏览

node.js - 使用 npm shinkwrap 和 git 跟踪 node_modules

我在一个带有启动器和几个自制插件的节点项目中。这些插件在启动器package.json中使用 git repo 地址标记为依赖项。

我最近尝试过npm shrinkwrap完美地给了我用于每个插件的提交,但是插件上的任何开发人员都会破坏这一点。我尝试将其npm link用于我的 git 存储库,但它们shrinkwrap不再被跟踪。

所以基本上,我怎样才能为我可以工作的插件克隆 repo,以及如何精确的时刻获取我的依赖项的快照?

谢谢你能给我的任何线索。

0 投票
1 回答
636 浏览

node.js - npm 嵌套依赖不是最新版本

在我的 Node.js 项目中,我有一个依赖项gulp,该依赖项vinyl-fs具有一个依赖项,该依赖glob-watcher项具有一个依赖项gazeglob-watcheris version0.0.6gaze依赖项设置为^0.5.1.

根据这篇文章^(插入符号)表示接受最新的次要版本。所以我希望glob-watcher安装最新的次要版本gaze,(在撰写本文时)是0.6.4. 但它没有,只有0.5.1安装。

问:为什么?我该如何解决?

我尝试将以下内容添加npm-shrinkwrap.json到我的项目根目录并运行rm -rf node_modules/ && npm install

确实如此,所以gaze安装了我想要的版本,但不幸的是,该配置导致仅安装了这 4 个依赖项。我可以指定我的整个依赖树来解决这个问题,但这是不可取的,特别是因为我只想覆盖那个包。(但根据所谓的行为,似乎甚至不需要覆盖^。)

显然,我也可以cd为该依赖项编写一个 shell 脚本并手动npm install获得我想要的版本,但如果有的话,我宁愿以“正确”的方式执行此操作。

任何帮助将不胜感激。

0 投票
0 回答
63 浏览

node.js - 跨文件夹行共享包

假设我有以下包结构:

在这里,C 的 require(b) 和 D 的 require(b) 会有所不同(唯一的实例,而不是 ===)。这可以通过将 b 上移一级来解决:

现在,当 C 和 D 需要(b)时,它们将获得实际相同的对象。但是,假设我有这个布局:

在这里,我认为没有任何布局可以让 Main 的 require(b) 为 2.0.0,但仍然允许 c 和 d 共享相同的 b。我对么?我可以将 c 和 d 的 b 符号链接到同一个位置,但是我不能真正以收缩包装或任何其他格式表示该结构。

0 投票
1 回答
2214 浏览

node.js - 流星失败,无法从 npm-shrinkwrap 安装 npm-packages

几天来,我一直在诊断这个问题,并测试了与此类似的“流星”和“npm”依赖项出现的最重要的问题解决方案。我和我的后端工程师都被难住了。

我正在使用 OSX 10.10.3、ruby 1.9.3、node v0.10.36、npm 1.4.28、meteor 1.1.02。

另外,正如错误似乎表明的那样,我不在代理后面。

我的环境路径是:

导出 PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

这是错误:

如果您需要任何其他信息进行诊断,请告诉我。

0 投票
1 回答
725 浏览

node.js - 如何防止传递开发依赖被收缩包装

我有一个带有黄瓜列为 devDependency 的 package.json。cucumber 依赖于 cucumber-html。出于某种原因,当我在我的项目上运行 npm-shrinkwrap 时,cucumber-html 包含在 npm-shrinkwrap.json 中。有什么办法可以防止这种情况发生吗?

包.json

npm-shrinkwrap.json

谢谢

0 投票
1 回答
255 浏览

javascript - NPM 收缩包装正在开发中

当您npm install在开发环境中对同时具有 apackage.jsonnpm-shrinkwrap.json文件的项目执行操作时会发生什么?它会忽略收缩包装并package.json用于所有内容还是仅用于开发依赖项?

0 投票
2 回答
3210 浏览

npm - 为什么`npm install`使用shrinkwrap的'resolved'属性

我正在考虑在我的计算机上设置一个本地 npm 镜像,例如“npm_lazy”。npm install但它似乎npm shrinkwrap不适用于本地镜像。

让我解释。当有npm-shrinkwrap.json文件时,该npm install命令总是从收缩包装文件"resolved"属性中指定的 URL 请求包。因此,即使我有一个在 运行的本地 npm 镜像http://localhost:12345/,并且即使我将 npm 配置为将其用作其注册表,它也不会从我的本地镜像请求任何包模块(除非"resolved"收缩包装文件中的属性恰好指向http://localhost:12345/) .

基本上,npm install忽略 npm 的注册表配置并遵循 shrinkwrap"resolved"属性。

是否有理由npm install使用该"resolved"属性而不是使用依赖包名称和版本动态构造它?为什么 npm-shrinkwrap.json 有这个字段?

所以回到我的问题。我想使用 npm_lazy 作为本地 npm 镜像。"resolved"我可以将所有URL重写npm-shrinkwrap.json为指向http://localhost:12345/. 但是我的收缩包装文件的可移植性较差——除非他们的计算机运行相同的 npm_lazy 服务器,否则我的同事将无法使用。

我已经考虑将所有registry.npmjs.org流量重定向到localhost以创建透明镜像。但这太难了——它需要支持 HTTPS,而且,npm_lazy 将如何访问真正的域?我必须通过它的 IP 地址来指定它,这可能会改变。

有没有其他人尝试做同样的事情——设置本地计算机 NPM 缓存?但是,我的主要问题是,为什么 npm 使用“已解决”属性?谢谢。

0 投票
1 回答
1960 浏览

node.js - npm 递归更新包

我有一个这样的项目
在此处输入图像描述

我想将所有 private_mod 版本(根和嵌套级别)更新到 1.3.2。有没有一种 npm 方法可以做到这一点?

注意:每个依赖项(dep-1、dep-2、dep-3)都有自己的package.json

我能想到的一种方法是:
- 生成收缩包装文件-为所有依赖项npm shrinkwrap
手动编辑新版本的 private_mod 文件 - 再次执行 npm install 以从文件中安装新包npm-sharinkwrap.json
shrinkwrap

0 投票
0 回答
96 浏览

proget - 通过 ProGet 使用 npm-shrinkwrap 时出现 ECONNRESET 错误

当使用通过我们的内部 ProGet 服务器安装的收缩包装包时,我们看到 ECONNRESET 问题。当将 npm 注册表配置为常规 npm 注册表并基于此收缩包装包时,一切都安装得很好。我们删除node_modules并在运行之间执行npm cache clean以确保我们强制从 ProGet 下载。有趣的是,当插入文件下载器时, npm-shrinkwrap.json中列出的所有 1,000 多个资源请求都会正确下载。

当使用详细标志进行安装时,我们看到许多 404,其中 npm 客户端似乎任意更改注册表 url 从http://<internal-url>/npm/npm以省略某些请求的 npm/npm,但我们没有'不知道为什么会发生这种情况或是否相关。

我们使用 ProGet 3.8.6、npm 3.3.11 和 3.5.4(在两台开发人员机器上测试,结果相同)和节点 4.2.1。