// clean logger.event('clean'); eachPkg(pkgs, ({ dir, name }) => { logger.info(`clean dist of ${name}`); rimraf.sync(join(dir, 'dist')); });
// build packages logger.event('build packages'); await $`npm run build:release`; await $`npm run build:extra`; await $`npm run build:client`;
logger.event('check client code change'); const isGitCleanAfterClientBuild = ( await $`git status --porcelain` ).stdout.trim().length; assert(!isGitCleanAfterClientBuild, 'client code is updated');
// generate changelog // TODO logger.event('generate changelog');
// bump version logger.event('bump version'); await $`lerna version --exact --no-commit-hooks --no-git-tag-version --no-push --loglevel error`; const version = require(PATHS.LERNA_CONFIG).version; let tag = 'latest'; if ( version.includes('-alpha.') || version.includes('-beta.') || version.includes('-rc.') ) { tag = 'next'; } if (version.includes('-canary.')) tag = 'canary';
// update example versions logger.event('update example versions'); const examplesDir = PATHS.EXAMPLES; const examples = fs.readdirSync(examplesDir).filter((dir) => { return ( !dir.startsWith('.') && existsSync(join(examplesDir, dir, 'package.json')) ); }); examples.forEach((example) => { const pkg = require(join(examplesDir, example, 'package.json')); pkg.scripts['start'] = 'npm run dev'; // change deps version setDepsVersion({ pkg, version, deps: [ 'umi', '@umijs/max', '@umijs/plugins', '@umijs/bundler-vite', '@umijs/preset-vue', ], // for mfsu-independent example update dep version devDeps: ['@umijs/mfsu'], }); delete pkg.version; fs.writeFileSync( join(examplesDir, example, 'package.json'), `${JSON.stringify(pkg, null, 2)}\n`, ); });
eachPkg(pkgs, ({ dir, name }) => { logger.info(`clean dist of ${name}`); rimraf.sync(join(dir, 'dist')); });
给每个包进行build生产dist
1 2 3 4 5
// build packages logger.event('build packages'); await $`npm run build:release`; await $`npm run build:extra`; await $`npm run build:client`;
再次检查是否有未git add 文件
因为上面的 build命令,有些包会改变 client 目录
1 2 3 4 5
logger.event('check client code change'); const isGitCleanAfterClientBuild = ( await $`git status --porcelain` ).stdout.trim().length; assert(!isGitCleanAfterClientBuild, 'client code is updated');
lerna 批量更新版本号
1 2 3 4 5 6 7 8 9 10 11 12 13
// bump version logger.event('bump version'); await $`lerna version --exact --no-commit-hooks --no-git-tag-version --no-push --loglevel error`; const version = require(PATHS.LERNA_CONFIG).version; let tag = 'latest'; if ( version.includes('-alpha.') || version.includes('-beta.') || version.includes('-rc.') ) { tag = 'next'; } if (version.includes('-canary.')) tag = 'canary';