我们有一个私有的 JFrog 工件(名称在下面匿名),它在项目根目录 .npmrc 文件中配置了 npm:
registry=https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/
Run Code Online (Sandbox Code Playgroud)
开发人员之间通过 Git 共享的 package-lock.json 文件中的已解析字段在“npm install”运行之间不断变化,而对 package.json 没有任何更改。
有时,一个 dl 查询参数(指向完全相同的 URL)被添加到解析的 URL 中:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/@sailshq/lodash/-/lodash-3.10.3.tgz",
+ "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/@sailshq/lodash/-/lodash-3.10.3.tgz?dl=https://artifactory.jfrog.private.com/@sailshq/lodash/-/lodash-3.10.3.tgz",
Run Code Online (Sandbox Code Playgroud)
有时查询参数指向 npmjs.org 注册表:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/aproba/-/aproba-1.2.0.tgz",
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/aproba/-/aproba-1.2.0.tgz?dl=https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
Run Code Online (Sandbox Code Playgroud)
有时该字段直接指向 npmjs.org 存储库:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/acorn/-/acorn-3.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
Run Code Online (Sandbox Code Playgroud)
这些变化中的任何一个也可能朝着相反的方向发展。
这真的很烦人,因为这意味着我们不断在 package-lock.json 中进行无意义的更改,这会导致合并冲突并经常阻止 npm ci 正确执行。npm cache clean --force 似乎没有帮助。我知道 npm install 可以自动解决 package-lock.json 合并冲突,但这对 npm ci 没有帮助(因为重点是不在CI 环境中运行 npm install )。而且,无论如何,查看虚拟 npm 注册表如何在内部解析包有什么好处(我怀疑这里正在发生)?
是否有某种配置选项可以防止 JFrog Artifactory 对虚拟 npm 注册表中已解析的包 URL 进行此类更改?或者它可能是 …
将npm package-lock.json
置于版本控制之下有什么意义?根据我的经验,这个文件源控制引起了比效率提升更多的麻烦和混乱.
拥有package-lock.json
源代码控制下使一个大难题每个人谁添加/删除一个开发者/修改的任何节点模块时需要解决冲突的分支之间.特别是在复杂/大型应用程序上工作,其中package-lock.json可以长达数万行.即使只是吹掉node_modules并运行一个新的,npm install
也会在package-lock中产生剧烈的变化.
关于包锁还有其他几个SO问题:
和一个关于包锁的大量对话的GitHub问题:
这让我觉得仍有广泛的不确定因素需要消除.
根据文件
package-lock.json
为npm修改node_modules树或package.json的任何操作自动生成.
那你为什么要把一个自动生成的文件放在源代码管理下呢?
上面的GitHub问题详细说明了一些人为了应对与package-lock.json的混淆,如何将npm install
脚本更改为rm -f package-lock.json && npm install
,这也感觉不正确.
似乎package-lock.json
正在努力成为节点模块依赖关系的确切版本的真实来源,但这不正是package.json的功能吗?什么时候解决这个文件中的合并冲突的难以忍受的痛苦开始得到回报?
我下载了一个主题,它有一个package-lock.json文件但没有package.json文件.有没有办法可以从package-lock.json文件生成package.json.如何仅使用package-lock.json文件安装节点模块.有没有办法做到这一点?
npm 5介绍了package-lock.json,其中的文档就在这里.
它声明该文件旨在包含在版本控制中,因此任何克隆您的包并安装它的人都将具有相同的依赖版本.换句话说,您不应将其添加到.gitignore文件中.
它没有说明的是该文件是否包含在已发布的包中.这个问题可以改为:应该将package-lock.json包含在.npmignore中吗?
今天github在我的github存储库上显示以下错误:
我们在您的某个依赖项中发现了潜在的安全漏洞../package-lock.json中定义的依赖项具有已知的安全漏洞,应予以更新.
单击"查看易受攻击的依赖关系"按钮后显示以下消息
5.0.3之前的hoek节点模块通过'merge'遭受假定不可变数据(MAID)漏洞的修改
直到昨天它没有出现这样的错误.我没有对这个存储库进行任何超过5天的推送.不知道为什么会这样.
在依赖对象的package-lock.json中,我有两个requires
和dependencies
字段,例如
"requires": {
"@angular-devkit/core": "0.8.5",
"rxjs": "6.2.2",
"tree-kill": "1.2.0",
"webpack-sources": "1.3.0"
},
"dependencies": {
"rxjs": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
"integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
"dev": true,
"requires": {
"tslib": "1.9.3"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?为什么一些依赖列在requires
,其他的dependencies
,其中一些在这两个领域?
我yarn install
在 Visual Studio Code 中使用了该命令,但出现错误。以下错误消息。
package-lock.json found.
Your project contains lock files generated by tools other than Yarn.
It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files.
To clear this warning, remove package-lock.json.
Run Code Online (Sandbox Code Playgroud)
我认为它package-lock.json
与 yarn.lock的 npm冲突重叠
。
针对问题采取行动。
移除package-lock.json
,移除node_modules
这个问题仍然没有解决。
谢谢你!
通常,在建立团队的过程中,我遇到了合并冲突,package-lock.json
而我的快速解决方案一直是删除文件并使用重新生成文件npm install
。我尚未认真考虑此修复程序的含义,因为它以前没有引起任何可察觉的问题。
删除文件并以npm
这种方式重新创建而不是手动解决冲突是否存在问题?
我有一个用于 Angular 项目的 CI/CD 管道,昨天运行良好,但今天相同的代码在构建中返回了几个错误:
\n./src/styles.scss.webpack[javascript/auto]!=!./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./src/styles.scss\n- Error: Module build failed (from ./node_modules/sass-loader/dist/cjs.js): SassError: Undefined variable.\n \xe2\x95\xb7 142 \xe2\x94\x82 values: $utilities-border-colors\n \xe2\x94\x82 ^^^^^^^^^^^^^^^^^^^^^^^^\n \xe2\x95\xb5 node_modules\\bootstrap\\scss\\_utilities.scss 142:15 @import src\\styles.scss 7:9 root stylesheet\n\n./src/styles.scss - Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):\nHookWebpackError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):\nSassError: Undefined variable.\n \xe2\x95\xb7\n142 \xe2\x94\x82 values: $utilities-border-colors\n \xe2\x94\x82 ^^^^^^^^^^^^^^^^^^^^^^^^\n \xe2\x95\xb5\n node_modules\\bootstrap\\scss\\_utilities.scss 142:15 @import\n src\\styles.scss 7:9 root stylesheet\n at tryRunOrWebpackError (C:\\User\\user\\project\\node_modules\\webpack\\lib\\HookWebpackError.js:88:9)\n at __webpack_require_module__ (C:\\User\\user\\project\\node_modules\\webpack\\lib\\Compilation.js:4979:12)\n at __webpack_require__ (C:\\User\\user\\project\\node_modules\\webpack\\lib\\Compilation.js:4936:18)\n at C:\\User\\user\\project\\node_modules\\webpack\\lib\\Compilation.js:5007:20\n at symbolIterator (C:\\User\\user\\project\\node_modules\\neo-async\\async.js:3485:9)\n at done (C:\\User\\user\\project\\node_modules\\neo-async\\async.js:3527:9)\n at Hook.eval [as callAsync] …
Run Code Online (Sandbox Code Playgroud) npm ×7
node.js ×5
package.json ×3
javascript ×2
angular ×1
artifactory ×1
build ×1
git ×1
github ×1
gitignore ×1
node-modules ×1
npmignore ×1
webpack ×1
yarnpkg ×1