项目才刚刚开始,我的团队成员安装的模块没有严格的版本,例如npm i some_package
,但是我认为它是bug in production,所以我有一个package.json
文件
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"keywords": [],
...something else...,
"author": "",
"license": "ISC",
"dependencies": {
"axios": "0.19.0",
"express": "~4.17.1",
"pg": "^7.11.0"
},
"devDependencies": {
"sinon": "7.3.2",
"ts-node": "~8.3.0",
"typescript": "^3.5.3"
}
}
如您所见,^7.11.0
和~4.17.1
字段中有插入号(0.19.0
),波浪号(dependencies
)和固定(devDependencies
)npm模块< / p>
我希望只有固定的dependencies
和devDependencies
通过我的Gitlab / Github CI管道,否则CI应该会失败(exit code 1
)。
我认为我需要为此编写shell脚本,例如cat package.json | check ^ and ~ ...
上面的示例应该失败,下面的示例应该通过
"dependencies": {
"axios": "0.19.0",
"express": "4.17.1",
"pg": "7.11.0"
},
"devDependencies": {
"sinon": "7.3.2",
"ts-node": "8.3.0",
"typescript": "3.5.3"
}
此shell脚本的外观如何?
答案 0 :(得分:1)
您必须使用所谓的锁定文件,请参见https://yarnpkg.com/lang/en/docs/yarn-lock/和https://docs.npmjs.com/files/package-locks。
这个想法是您将 <img src="images/phone1.png" width="100" height="100" id="phoneImg" class="contactImgs" data-toggle="popover" tabindex="50" data-content="test <b>text</b>" data-placement="right" />
.popover {
background-color: #f8be94;
border:none;
}
.popover .arrow::before {
background-color: #f8be94 !important;
}
文件中的锁定文件提交到git存储库。锁定文件包含依赖性的固定版本。
设置完成后,您可以使用以下命令在ci中运行npm:
package.json
或
npm ci
如果yarn --frozen-lockfile
与锁定文件不匹配,则CI将失败。