在单存储库设置上自动碰撞 package.json 版本



>我有一个 Angular 6 应用程序设置为单存储库,其中包含一个需要发布到 NPM 的项目和一个演示应用程序。我想使用npm version来提升应用程序和项目的版本。

我的结构是这样的:

| MyFolder/
| -- package.json   <= "Demo App" package file
| -- src/
| -- projects/
| -- mylibrary/
| -- package.json   <= My Angular Library package file

当我在 MyFolder 根目录上运行npm version时,它只更新演示应用程序的版本号,而是我希望它使用新版本更新演示应用程序和库的 package.json 文件。

我知道我可以只运行两次 npm 版本命令,但我宁愿把它全部做一个步骤,以避免忘记执行其中一个。

有没有办法让我使用一个命令更新多个 package.json 文件?

我正在使用一个小的nodejs脚本来实现这一点。

const mainPackageJson = require('../package.json');
const glob = require('glob');
const fs = require('fs');
glob.sync('./projects/**/package.json')
.forEach(location =>
fs.writeFileSync(location, JSON.stringify({
...JSON.parse(fs.readFileSync(location)),
version: mainPackageJson.version
}, null, 3))
);

我在package.json中的"版本"脚本期间调用此脚本。这在 npm 设置新版本之后但在提交到 git 之前执行。之后,我将文件添加到 git(您不需要提交,因为 npm 会处理这个问题(:

package.json:

{
"name": "my-name",
"version": "1.0.0",
"scripts": {
"version": "run-s version:bump-all version:add-all",
"version:bump-all": "node ./build_utils/bump-version.js",
"version:add-all": "git add "*/package.json"",
},
"devDependencies": {
"npm-run-all": "^4.1.3",
"glob": "^7.1.3",
}
}

请注意,我正在使用"glob"库通过 glob 模式获取子文件夹中的 package.json 文件。此外,我使用 npm-run-all 来避免在 package.json 脚本中使用"&&"来链接命令(run-s 来自 npm-run-all,并按顺序运行 2 个命令(

最新更新