问题标签 [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.
javascript - NPM shrinkwrap 使用本地模块作为依赖
我目前正在使用cropper
并jquery@latest
在我的package.json
. 但是,cropper
需要jquery
作为它自己的依赖项,最终会安装和使用两个版本的 jquery。我尝试将此添加到我的npm-shrinkwrap.json
:
但最终发生的一切是我安装了两个相同的版本jquery
。
我需要做的是让cropperjquery
在我的本地版本中使用package.json
它,而不是它自己的版本。我完成此操作的唯一方法是node_modules
从内部手动删除文件夹,cropper
但这不是长期解决方案。
我将如何cropper
使用我的本地jquery
?或者让 shrinkwrap 不安装cropper
sjquery
依赖项?
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.json
(https://gist.github.com/bessarabov/33c9421744582501482e4f00453f9d38)
所以,我不确定第二个是否npm install
真的使用npm-shrinkwrap.json
文件中的数据。我想找到一种在使用的日志中查看的npm-shrinkwrap.json
方法。
我在用着:
但我也尝试过节点 6.5.0,结果是一样的。
npm - npm shrinkwrap vs install 通过 --save-exact 标志
npm shrinkwrap
使用或始终安装传递-E
or--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
我们的项目吗?
node.js - 如何使用 `yarn` 覆盖嵌套依赖项?
如果我的包有这些依赖
并且foobar
包有这些依赖
而最新发布的版本baz
是2.1.0
,第一次运行yarn
将安装baz@2.1.0
在foobar/node_modules
.
我如何强制纱线使用baz@2.0.9
包装foobar
?
我的理解是,这可以使用npm shrinkwrap
(a la this question)。
我的问题的总结可能是:Yarn 创建了可重复的、确定性的安装,但我如何自定义该安装?
node.js - 如何检查一致性 npm-shrinkwrap.json 和 package.json
有时我的团队成员在更新 package.json 后忘记更新 npm-shrinkwrap.json。我从 uber 知道这个包,但它不能与 npm v3 一起使用。所以现在不是解决方案。
我有可能自动检查 npm-shrinkwrap.json 和 package.json 的一致性吗?我想在 git-hook 或/和连续中做到这一点。
json - 如何使用 JQ 删除所有嵌套键
我想从一个 npm shrinwrap json 文件中删除所有 resloved。在其他机器上运行 npm install 时,这会导致问题。
如何从所有文件中删除已解析的密钥
我正在使用模式:
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 中的依赖项,如下所示:
我能做些什么来解决这个依赖问题?
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 或名称?
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 解决问题的解决方案。
node.js - npm shrinkwrap(不受欢迎)退回到 package.json
我npm-shrinkwrap
用来锁定我的项目依赖项。
但是我遇到了一个问题。似乎如果您从npm-shrinkwrap.json
then 节点中删除一个依赖项,就会通过package.json
. 我通过删除 my 中的一个条目来测试这一点,npm-shrinkwrap.json
并注意到它node_modules
在npm install
.
我在这里担心的是有人在不知不觉中使用npm intall --save-dev
向项目添加新依赖项但忘记更新npm-shrinkwrap.json
. 然后,您可能会在项目中引入变量依赖项,这些依赖项可能会从开发人员更改为开发人员或 CI 服务器,这似乎是npm shrinkwrap
旨在防止的。
我的问题是我在这个断言中是否正确,或者以某种方式误解了这种行为,或者如果正确,我可以做些什么来强制只npm install
使用依赖项并忽略. 我突然想到我可以通过在生成后删除依赖项来解决这个问题,但显然这并不理想。npm-shrinkwrap.json
package.json
package.json
npm-shrinkwrap.json