问题标签 [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 回答
172 浏览

javascript - NPM shrinkwrap 使用本地模块作为依赖

我目前正在使用cropperjquery@latest在我的package.json. 但是,cropper需要jquery作为它自己的依赖项,最终会安装和使用两个版本的 jquery。我尝试将此添加到我的npm-shrinkwrap.json

但最终发生的一切是我安装了两个相同的版本jquery

我需要做的是让cropperjquery在我的本地版本中使用package.json它,而不是它自己的版本。我完成此操作的唯一方法是node_modules从内部手动删除文件夹,cropper但这不是长期解决方案。

我将如何cropper使用我的本地jquery?或者让 shrinkwrap 不安装croppersjquery依赖项?

0 投票
0 回答
486 浏览

javascript - 如何确保 npm install 使用来自 npm-shrinkwrap.json 的数据

在我的 javascript 项目中,我想冻结依赖项。为此,我使用 npm-shrinkwrap https://docs.npmjs.com/cli/shrinkwrap

我做了文档中写的事情,它有效,但我找不到任何证据表明安装确实使用文件 npm-shrinkwrap.json 中的数据

这里有更详细的解释。

我有一个超级简单的 js 项目:

然后我运行npm install(这里是日志——https: //gist.github.com/bessarabov/9920d6dcb1cd71e504c6fe561e39643f)然后我运行:

所以,在我运行这两个命令后,我得到了新目录node_modules和一个新文件npm-shrinkwrap.json

然后我删除已安装的库:rm -rf node_modules/npm install再次运行。并且日志与没有时完全相同npm-shrinkwrap.jsonhttps://gist.github.com/bessarabov/33c9421744582501482e4f00453f9d38

所以,我不确定第二个是否npm install真的使用npm-shrinkwrap.json文件中的数据。我想找到一种在使用的日志中查看的npm-shrinkwrap.json方法。

我在用着:

但我也尝试过节点 6.5.0,结果是一样的。

0 投票
1 回答
265 浏览

npm - npm shrinkwrap vs install 通过 --save-exact 标志

npm shrinkwrap使用或始终安装传递-Eor--save-exact|-E标志的依赖项有什么不同?

即:$ npm i redux -SE -SE --save --save-exact

我想shrinkwrap也会处理锁定“我们的第一级依赖项的依赖项”,但总是使用它会是一个不好的做法--save-exact吗?如果没有,我们何时或为什么需要使用该--save-exact标志?

编辑:我也开始看到人们建议配置 npm 以默认安装确切版本的依赖项:

IE。:$ npm config set save-exact=true

现在,如果我们这样做,我们还需要shrinkwrap我们的项目吗?

0 投票
3 回答
44942 浏览

node.js - 如何使用 `yarn` 覆盖嵌套依赖项?

如果我的包有这些依赖

并且foobar包有这些依赖

而最新发布的版本baz2.1.0,第一次运行yarn将安装baz@2.1.0foobar/node_modules.

我如何强制纱线使用baz@2.0.9包装foobar

我的理解是,这可以使用npm shrinkwrap(a la this question)。


我的问题的总结可能是:Yarn 创建了可重复的、确定性的安装,但我如何自定义该安装?

0 投票
2 回答
660 浏览

node.js - 如何检查一致性 npm-shrinkwrap.json 和 package.json

有时我的团队成员在更新 package.json 后忘记更新 npm-shrinkwrap.json。我从 uber 知道这个包,但它不能与 npm v3 一起使用。所以现在不是解决方案。

我有可能自动检查 npm-shrinkwrap.json 和 package.json 的一致性吗?我想在 git-hook 或/和连续中做到这一点。

0 投票
1 回答
2320 浏览

json - 如何使用 JQ 删除所有嵌套键

我想从一个 npm shrinwrap json 文件中删除所有 resloved。在其他机器上运行 npm install 时,这会导致问题。

如何从所有文件中删除已解析的密钥

我正在使用模式:

0 投票
0 回答
638 浏览

node.js - 将 npm 项目版本升级到候选版本 - UNMET PEER DEPENDENCY

所以,我需要将我对“react”的 npm 依赖升级到 15.4.0-rc.4

我尝试将 package.json 中的值更新为“^15.4.0-rc.4”并删除依赖项,然后运行 ​​npm install react@15.4.0-rc.4 --save

然而问题是我总是得到这个:

我已经覆盖了我的 npm-shrinkwrap.json 中的依赖项,如下所示:

我能做些什么来解决这个依赖问题?

0 投票
1 回答
91 浏览

node.js - 为什么 npm-shrinkwrap 每次都会在名称和 URL 之间切换?

使用:

节点 v4.6.2、npm 2.15.5、nvm 0.29.0、自制 1.1.1-64-g17bad9a、macOS 10.12.1

脚步:

  • 我更新package.json
  • 删除我所有的模块:rm -fr node_modules
  • 重新安装一切:nvm exec npm install
  • 并更新收缩包装:nvm exec npm shrinkwrap --dev

结果:

每次,每个模块的字段都会在名称和 URL 之间变化,如下图difffrom的部分捕获所示:npm-shrinkwrap.json

来自使用 Bundler 的 Ruby 世界,我不明白这背后的逻辑。为什么每次运行 npm-shrinkwrap 时都要在 URL 和名称之间进行更改?在我看来,这使得npm-shrinkwrap.json版本控制变得不切实际。

我怎样才能npm-shrinkwrap保持一致并且只使用 URL 或名称?

0 投票
1 回答
1536 浏览

node.js - 强制依赖使用特定的子依赖版本

我正在使用 webpack 和 npm 模块构建我的网站代码,并遇到以下问题:

我的代码使用 jQuery 3.1.1 并添加了一些插件。我还使用了一个对 jQuery <= 2.2.4 有子依赖的依赖项。问题是,子依赖的对象显然不知道我的 jQuery 插件,因为模块使用不同的 jquery 版本。

如何强制所有依赖项(顶级和嵌套)使用一个版本的 jQuery?所以这require("jquery")总是解析为 jQuery 3.1.1。

我尝试使用 npm shrinkwrap 覆盖依赖版本,但这似乎不起作用。这是我修改后的收缩包装文件:

但是模块的依赖仍然是 jQuery 2.2.4 并npm install打印npm ERR! invalid: jquery@3.1.1 /path/.../can/node_modules/jquery

也接受使用 webpack 而不是 npm 解决问题的解决方案。

0 投票
0 回答
518 浏览

node.js - npm shrinkwrap(不受欢迎)退回到 package.json

npm-shrinkwrap用来锁定我的项目依赖项。

但是我遇到了一个问题。似乎如果您从npm-shrinkwrap.jsonthen 节点中删除一个依赖项,就会通过package.json. 我通过删除 my 中的一个条目来测试这一点,npm-shrinkwrap.json并注意到它node_modulesnpm install.

我在这里担心的是有人在不知不觉中使用npm intall --save-dev向项目添加新依赖项但忘记更新npm-shrinkwrap.json. 然后,您可能会在项目中引入变量依赖项,这些依赖项可能会从开发人员更改为开发人员或 CI 服务器,这似乎是npm shrinkwrap旨在防止的。

我的问题是我在这个断言中是否正确,或者以某种方式误解了这种行为,或者如果正确,我可以做些什么来强制npm install使用依赖项并忽略. 我突然想到我可以通过在生成后删除依赖项来解决这个问题,但显然这并不理想。npm-shrinkwrap.jsonpackage.jsonpackage.jsonnpm-shrinkwrap.json