问题标签 [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 投票
3 回答
2614 浏览

npm - 何时使用 shrinkwrap、npm-lockdown 或 npm-seal

我来自一个更熟悉的背景composer。我正在gulp(等)进行构建过程和学习node以及如何使用npm

默认情况下不包含类似清单是非常奇怪的(同样,来自composer背景) 。composer.lock话虽如此,我一直在阅读有关 [shrinkwrap]、[npm-lockdown] 和 [npm-seal] 的文档。...而且我阅读的文档越多,我对应该选择哪种方式就越困惑(每个人都认为他们的方式是最好的方式)。我注意到的一个问题是,npm-seal在 4 年和 8 个月内没有改变npm-lockdown——这一切都让我想知道这是否是因为最新版本的npm...

  1. 每个的优点/缺点是什么?
  2. 在什么情况下,我会在项目 A 中使用另一个,但在项目 B 中使用不同的?
  3. 每个将如何影响我们的开发工作流程?

PS:如果您包含每个最基本的实现示例,则布朗尼点。;)

0 投票
1 回答
197 浏览

meteor - Meteor NPM:无法运行`npm shrinkwrap`

我一直在寻找如何解决这个问题,无法弄清楚。运行 React - Meteor 应用程序、meteorhacks:npm 和 browserify。

错误:

包.json

奇怪的是我有这个工作,然后一旦我尝试从 material-ui 0.13.4 更新到 0.14.4,整个包停止工作。然后我恢复到 0.13.4,同样的错误仍然存​​在。我试过删除 meteorhacks:npm 和 npm-container 文件夹,以及清除 npm 缓存。

如果我将 material-ui 降级到 0.13.1,错误就会消失,但我仍在尝试修复,因为我需要升级到 0.14。

0 投票
1 回答
2926 浏览

node.js - 如何在链接的 npm 依赖项(在开发中)和已安装的依赖项(在 staging/prod 中)之间切换?

我有一个正在开发的自定义 npm 模块,它有一个 GitHub 存储库。我也在做一个使用自定义模块的项目。在处理较大的项目时,它很好用npm link,因此我可以对模块进行更改并立即在主项目中看到它们。

为了部署到登台或生产环境,我使用了 shrinkwrap 和shrinkpack,这样我就可以npm install在每次部署后进行一次部署(一些依赖项需要二进制文件,并且开发系统与生产系统不同,因此它们确实需要安装,而不仅仅是保存在源代码管理中)。 编辑:我将其删除,因为下面的答案在技术上解决了我的问题,即使它不能解决这个特定问题,但这并不像其他问题那么重要。

当然,由于该模块链接到我的主项目并且未在 中列出package.json,因此部署和安装完全错过了它。我可以继续列出它package.json并让它指向适当的 GitHub 存储库,但是每次我需要测试主项目中的更改时,我都必须提交并推送这些更改,然后更新主项目,杀死并重新启动应用程序...这很快就会让人厌烦。

我想我需要与“devDependencies”相反的东西;我可以让它不在开发上安装模块的地方,但npm install登台或生产时从 GitHub 安装它。除了记住package.json每次需要来回手动更改之外,有没有更好的方法来做到这一点?

0 投票
1 回答
2623 浏览

node.js - 对同一服务器上的多个工作区使用共享的 npm node_modules/

我们的 Jenkins/CI 服务器每天为我们的 node/js 项目运行数百个构建,我希望能够在一个完全干净的工作空间中运行每个构建。但是,该npm install步骤可能需要超过 10 分钟,这太慢了。相反,由于我们的 npm 依赖项仅针对少量构建(约占所有构建的 1%)而更改,因此我希望npm install每次npm-shrinkwrap.json更改时只运行一次(每次构建时检查 md5sum)。如果收缩包装文件未更改,请使用缓存node_modules/目录。

如果我复制缓存的,这个计划就足够了node_modules/,但是即使这个操作也可能需要一分钟。为了进一步优化我们的构建时间,我希望能够对缓存进行符号链接node_modules/,这将大大提高我们的整体构建性能。

但是,在依赖关系树的多个级别存在依赖关系的情况下,简单地符号链接到缓存的路径是行不通的。例如,我们的顶级项目同时依赖于gulpgulp-util。顶层依赖也依赖于gulp-util. 之后npm installgulp-util将安装在顶层node_modules/而不是node_modules/gulp/node_modules.

如果依赖项存在于本地工作区(即真实目录)中,那么 inside的/path/to/workspace/node_modules/任何实例(我认为)都会递归依赖项树,直到找到合适的模块。也就是说,它开始查找,没有找到任何东西,然后查找,找到合适的模块,导入它并继续前进。require('gulp-util')node_modules/gulpgulp-util/path/to/workspace/node_modules/gulp/node_modules/gulp-util/path/to/workspace/node_modules/gulp-util

但是,当这是一个符号链接时,我会收到如下错误:

我认为这会尝试与其他版本相同,但我不明白为什么它无法找到gulp-util. 无论是查找/path/to/workspace/node_modules/gulp-util还是查找/path/to/cache/gulp-util,它都应该找到该模块并能够导入它。

我已经尝试通过手动安装模块来解决这个问题gulp/node_modules/gulp-util,但是我遇到了几十个这样的错误,并且在构建服务器上手动处理这个问题是不可行的。编写一些代码来搜索这种类型的依赖项并安装它们是可能的,但感觉这样做是错误的。

npm 必须有某种方式来支持这样的工作流程,对吧?我错过了一些明显的东西吗?我是否掩盖了文档中的某些内容?

0 投票
1 回答
25 浏览

node.js - 如何检查在 npm 中引入了哪些依赖项?

package.json列出应用程序的所有直接依赖项。虽然npm-shrinkwrap.json以非常扁平的格式列出所有依赖项(似乎它尽可能将孩子的依赖项作为根的依赖项(?))

查看这些依赖项,我想知道哪个引入哪个,以便我可以删除一些非必要的依赖项,这些依赖项会拖累许多非必要的依赖项。

怎么做?

0 投票
3 回答
1609 浏览

json - 从自定义文件系统目录透明地离线安装 npm 包

编者按:问题的原标题是“使用 npm install 安装存储在本地目录中的节点模块”,这使得透明地重新定义安装源的愿望变得不那么明显了。因此,一些现有的答案提出了基于修改安装过程的解决方案。

我知道这是一件简单的事情,但我对这个领域的任何事情都很陌生,所以在四处搜索并不断找到并不是我真正想要的答案之后,我想我只是直接问。

我目前有一个在 FOO 目录中运行的进程,它调用 npm install。目录 FOO 包含一个 package.json 和一个 npm-shrinkwrap.json 文件,用于指定模块(在本例中为 bluebird、extend 和 mysql,但并不重要)和版本。这一切都很好。

但现在我不想上网获取模块,而是希望将它们存储在本地目录 BAR 中,并在 foo 中使用 npm 从那里安装它们。我不能将它们永久存储在 FOO 中,但由于我无法控制的原因,我可以将它们存储在 BAR 中。我知道这相对简单,但我似乎无法获得正确的命令集。谢谢您的帮助。

0 投票
1 回答
495 浏览

node.js - 如何收缩使用“npm link”创建的符号链接节点模块?

我一次在两个存储库上工作。一个依赖于另一个(在package.json依赖项中列出)。

所以我使用npm link ..\theOneinother来同时处理这两个模块。结果,我可以在另一个模块上测试修改。问题是npm shrinkwrap在这个other模块上做时:它会产生如下错误:

npm ERR! extraneous C:\other\node_modules\theOne\node_modules\{xxxx}

{xxxx}是一个对 npm 来说似乎无关紧要的开发依赖项。

任何人都成功地将带有符号链接的模块收缩包装到另一个模块?

注意:

  • npm 3.10.3
  • 节点 6.3.0
0 投票
1 回答
193 浏览

node.js - 运送带有自定义依赖项的 node.js 项目

我修复了我的 node.js 项目的嵌套依赖项中的几个问题(依赖项由 npm 管理)。这些修复是待处理的拉取请求,因此不会发布。在我的项目中使用它们的最佳方式是什么?

我知道我可以npm link在库的固定版本中进行操作,然后npm link library-name在我的项目中强制 npm 使用我的固定版本。这种方法有效,但将我的library-name全局安装在我不喜欢的机器上。

是否可以在主项目的 repo 本地拥有它,强制项目使用它而不是npm link.

0 投票
1 回答
4379 浏览

node.js - npm shrinkwrap 中的 fsevents(由 chokidar 引入)导致 Windows 上的构建失败

OSX 仅fsevents在 中列出,npm shrinkwrap因为它是由chokidar. 我们的产品是基于 Linux 的,它在那里没有造成任何问题,显然 OSX 开发人员也很好,但它npm install在我的 Win x64 环境中崩溃了。

我该如何解决?

完整输出: http: //pastebin.com/WNy0pmqK

有人遇到过这个吗?如何克服这一点?


关于我的系统的信息:

我现在正在使用 Node.js 6.4(尝试升级表单 5.3,所以它可能会有所帮助)。Npm 版本是 3.10.5,尽管我尝试降级到 3.3.12,因为某些 npm 问题表明了这一点。我正在使用 x64 Win 10 Insider 最新的慢速环版本。


这可能是相关的,但没有一个解决方案有效,而且它与收缩包装无关:node-gyp build error windows x64

可能是相关的git问题:

0 投票
1 回答
188 浏览

npm - npm shrinkwrap 包含到 localhost 的路径

运行后npm shrinkwrap我发现我们有很多对 localhost 的引用:

原来这些引用也在原始 node_modules 中:

所以这意味着我在安装时会遇到很多获取和重试错误:

这不可能。解决此问题的最佳方法是什么?