我的模板中有一个包含多个依赖项的 package.json。 如果我想创建一个新项目,我会使用我的模板。 但是如何将所有
*
(星号/最新版本)转换为从npm下载的固定版本。 npm install --save
不起作用。
npm install 之前(模板 package.json)
"devDependencies": {
"one": "*",
"two": "*",
"three": "*"
}
应转换为以下
npm i --save
。
"devDependencies": {
"one": "1.0.0",
"two": "2.0.0",
"three": "3.0.0"
}
如何覆盖版本字符串?
根据 文档
(*) --> 匹配任何版本
("") --> (只是一个空字符串)与 *
相同此问题的解决方法是 shrinkwrap(阅读文档以获取更多信息)。您可以使用此命令
npm shrinkwrap
。这将创建一个 npm-shrinkwrap.json 文件。当您运行该命令时,您会在控制台上看到以下注释(npm 通知 package-lock.json 已重命名为 npm-shrinkwrap.json。npm-shrinkwrap.json 将用于将来的安装。)。这将提供更新后的软件包版本,无论您在 package.json 中拥有什么。
使用
npm list --depth=0
查看通过从模板安装“最新”来安装的版本。你应该得到这样的东西:
├── @angular-devkit/[email protected]
├── @angular-devkit/[email protected]
├── @angular-eslint/[email protected]
将输出复制、修改并粘贴到 package.json 中。那么您可能应该删除 node_modules 并检查运行
npm ci
是否正常工作。
备注:
"react": "^16.0.0" // carat: allow 16.1.0
"react": "~16.0.0" // tilde: allow 16.0.1
"react": "16.0.0" // exact: only 16.0.0