package.lock.json 文件的正确用法是什么?
What is the correct use of package.lock.json file, when exactly it works
package.lock.json
文件的确切用途是什么?我读过它,但它令人困惑。
假设我做 npm install
这样它会创建一个 package.lock.json
文件,下次我做 npm install
时,它会保留安装吗与 package.lock.json
文件中提到的相同的包?
假设我的 package.json
文件中有一个定义为 "^1.0.0"
的包版本,并且在 npm 注册表中有一个新版本可用。它会在我执行 npm install
时更新程序包,还是会与 package.json
中的内容保持一致?
有什么简单的方法可以用确切的包版本号更新 package.json
文件,而无需手动一一更新吗?我想保持包的版本相同,以便下次任何人安装 npm 时,他们应该得到完全相同的包。需要一个发布分支
实际上我需要 package.lock.json
文件的原始定义,但我发现它的行为不一致。
我尝试使用 NPM CI 但失败并出现错误 node_gyp needs python https://github.com/nodejs/node-gyp/issues/1977
package.lock.json 文件的确切用途是什么?
回答: 该文件用于描述最初生成的确切树,即最初用于安装的依赖项的版本(注意:它总是如果 package.json 或 node_modules 被 npm 修改,则被修改)
来源:https://docs.npmjs.com/configuring-npm/package-lock-json.html
现在回答您的具体问题:
假设我做 npm install
这样它会创建一个 package.lock.json
文件,下次我做 npm install 时,它会保留相同包的安装吗正如在 package.lock.json
文件中提到的那样?
这里的简单回答是:是
最初执行 npm install
时,您指定包名称。 npm 将创建 node_modules
文件夹和 package-lock.json
文件,并添加包含用于安装的版本的包条目。下次当您执行 npm install 时,如果不指定包,即使使用 caret (^)
符号,它也不会更新您的任何包,因为这次 npm 将查看 package-lock.json
文件(因为它存在于那里)它将安装 (package-lock.json
) 文件中指定的相同版本。
假设我的 package.json
文件中有一个定义为 "^1.0.0"
的包版本,并且新版本在 npm 注册表中可用。它会在我执行 npm install 时更新软件包,还是会与 package.json
中的内容保持一致?
如第一个问题所述,如果目录中存在 package-lock.json
,则不会。仅当目录中不存在 package-lock.json
文件和 node_modules
文件夹时才会更新包。
有什么简单的方法可以用确切的包版本号更新 package.json
文件,而无需手动逐个更新它?我想保持包的版本不变,这样下次有人 npm install
时,他们应该得到完全相同的包。需要发布分支
使用 npm ci
是一个很好的做法,但您也可以使用 npm update
,这会将依赖项更新到其最新的次要版本,并且您的 package.json
以及package-lock.json
文件也将被更新
对于生产,它的首选方式是使用最初使用的相同版本的依赖项。在这种情况下,最好有 package-lock.json
文件,所以在 dockerizing
应用程序的情况下,当你执行 npm install
时,它将安装 package-lock.json
[] 中使用的版本的依赖项。 =36=]
package.lock.json
文件的确切用途是什么?我读过它,但它令人困惑。
假设我做
npm install
这样它会创建一个package.lock.json
文件,下次我做npm install
时,它会保留安装吗与package.lock.json
文件中提到的相同的包?假设我的
package.json
文件中有一个定义为"^1.0.0"
的包版本,并且在 npm 注册表中有一个新版本可用。它会在我执行npm install
时更新程序包,还是会与package.json
中的内容保持一致?有什么简单的方法可以用确切的包版本号更新
package.json
文件,而无需手动一一更新吗?我想保持包的版本相同,以便下次任何人安装 npm 时,他们应该得到完全相同的包。需要一个发布分支
实际上我需要 package.lock.json
文件的原始定义,但我发现它的行为不一致。
我尝试使用 NPM CI 但失败并出现错误 node_gyp needs python https://github.com/nodejs/node-gyp/issues/1977
package.lock.json 文件的确切用途是什么?
回答: 该文件用于描述最初生成的确切树,即最初用于安装的依赖项的版本(注意:它总是如果 package.json 或 node_modules 被 npm 修改,则被修改)
来源:https://docs.npmjs.com/configuring-npm/package-lock-json.html
现在回答您的具体问题:
假设我做
npm install
这样它会创建一个package.lock.json
文件,下次我做 npm install 时,它会保留相同包的安装吗正如在package.lock.json
文件中提到的那样?这里的简单回答是:是
最初执行
npm install
时,您指定包名称。 npm 将创建node_modules
文件夹和package-lock.json
文件,并添加包含用于安装的版本的包条目。下次当您执行 npm install 时,如果不指定包,即使使用caret (^)
符号,它也不会更新您的任何包,因为这次 npm 将查看package-lock.json
文件(因为它存在于那里)它将安装 (package-lock.json
) 文件中指定的相同版本。假设我的
package.json
文件中有一个定义为"^1.0.0"
的包版本,并且新版本在 npm 注册表中可用。它会在我执行 npm install 时更新软件包,还是会与package.json
中的内容保持一致?如第一个问题所述,如果目录中存在
package-lock.json
,则不会。仅当目录中不存在package-lock.json
文件和node_modules
文件夹时才会更新包。有什么简单的方法可以用确切的包版本号更新
package.json
文件,而无需手动逐个更新它?我想保持包的版本不变,这样下次有人npm install
时,他们应该得到完全相同的包。需要发布分支使用
npm ci
是一个很好的做法,但您也可以使用npm update
,这会将依赖项更新到其最新的次要版本,并且您的package.json
以及package-lock.json
文件也将被更新
对于生产,它的首选方式是使用最初使用的相同版本的依赖项。在这种情况下,最好有 package-lock.json
文件,所以在 dockerizing
应用程序的情况下,当你执行 npm install
时,它将安装 package-lock.json
[] 中使用的版本的依赖项。 =36=]