gpt4 book ai didi

angular - 在 monorepo 设置上自动提升 package.json 版本

转载 作者:行者123 更新时间:2023-12-02 00:34:05 26 4
gpt4 key购买 nike

我有一个 Angular 6 应用程序设置为 monorepo,其中包含一个需要发布到 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 version 命令两次,但我宁愿一步完成,以免忘记执行一个或另一个。

有没有一种方法可以通过一条命令更新多个 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 的“version”脚本中调用这个脚本。这在 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 个命令)

关于angular - 在 monorepo 设置上自动提升 package.json 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50492745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com