Skip to content

Commit

Permalink
CI
Browse files Browse the repository at this point in the history
  • Loading branch information
lc-cn committed Mar 1, 2024
1 parent 6152ba1 commit e4116a3
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"build": "node ./scripts/build.js",
"clean": "node ./scripts/clean.js",
"ci:version": "pnpm changeset version",
"ci:publish": "pnpm publish -r --access public --no-git-checks",
"ci:publish": "npm run build && node './scripts/publish.js",
"bump": "bumpp packages/**/package.json",
"docs:dev": "vitepress dev docs --port 5566",
"docs:build": "vitepress build docs",
Expand Down
10 changes: 10 additions & 0 deletions scripts/build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const { execSync } = require('child_process');
const { getPackages } = require('./common');
for (const root of getPackages()) {
console.log(`building ${root.replace(process.cwd() + '/', '')}`);
const result = execSync(`npm run build`, {
cwd: root,
encoding: 'utf8',
});
result && console.log(result);
}
42 changes: 42 additions & 0 deletions scripts/publish.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const { getPackages } = require('./common');
const fs = require('fs');
const { execSync } = require('child_process');
const { gt, prerelease } = require('semver');
const latest = require('latest-version');

function getVersion(name, isNext) {
if (isNext) {
return latest(name, { version: 'next' }).catch(() => getVersion(name));
} else {
return latest(name).catch(() => '0.0.0');
}
}

function isNext(version) {
const parts = prerelease(version);
if (!parts) return false;
return parts[0] !== 'rc';
}
(async () => {
for (const root of getPackages()) {
const meta = require(root + '/package.json');
const backupPackageJson = fs.readFileSync(root + '/package.json', 'utf8');
const newPackageJson = JSON.parse(backupPackageJson.replace(/workspace:latest/g, 'latest'));
Object.keys(newPackageJson.peerDependencies || {}).forEach(key => {
if (newPackageJson.dependencies[key]) delete newPackageJson.dependencies[key];
});

const current = await getVersion(meta.name, isNext(meta.version)); // 获取最新版本号
if (gt(meta.version, current)) {
fs.writeFileSync(root + '/package.json', JSON.stringify(newPackageJson, null, 2));
console.log(`start publish ${meta.name}@${meta.version}`);
execSync(`npm publish --access public --tag ${isNext(meta.version) ? 'next' : 'latest'}`, {
cwd: root,
encoding: 'utf8',
});
fs.writeFileSync(root + '/package.json', backupPackageJson);
} else {
console.log(`${meta.name}@${meta.version} no change, skip`);
}
}
})();

0 comments on commit e4116a3

Please sign in to comment.