mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
文件结构更改
This commit is contained in:
1 parent
b3af28dc43
commit
1f1d12ad73
109 files changed
+544
-3296
No files matched your search
@@ -0,0 +1,25 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import spawn from 'cross-spawn';
|
||||
|
||||
const args = ['jest', '--coverage'];
|
||||
|
||||
const [, , argv2, argv3] = process.argv;
|
||||
|
||||
if (argv2 && !argv2.startsWith('-')) {
|
||||
args.push(argv2);
|
||||
if (argv3 && !argv3.startsWith('-')) {
|
||||
args.push('--collectCoverageFrom');
|
||||
if (argv3.endsWith('.ts')) {
|
||||
args.push(`**/${argv3}`);
|
||||
} else {
|
||||
args.push(`**/${argv3}/**/*.ts`);
|
||||
}
|
||||
args.push(...process.argv.slice(4));
|
||||
} else {
|
||||
args.push(...process.argv.slice(3));
|
||||
}
|
||||
} else {
|
||||
args.push('packages/.+\\.spec\\.ts', ...process.argv.slice(2));
|
||||
}
|
||||
|
||||
spawn('npx', args, { stdio: 'inherit' });
|
||||
@@ -0,0 +1,54 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
/* eslint-disable consistent-return */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
/* eslint-disable import/no-dynamic-require */
|
||||
import { gt } from 'semver';
|
||||
import latest from 'latest-version';
|
||||
import ora from 'ora';
|
||||
import {
|
||||
PackageJson, getWorkspaces, spawnAsync,
|
||||
} from './utils';
|
||||
|
||||
const {
|
||||
CI, GITHUB_EVENT_NAME, GITHUB_REF,
|
||||
} = process.env;
|
||||
|
||||
if (CI && (GITHUB_REF !== 'refs/heads/master' || GITHUB_EVENT_NAME !== 'push')) {
|
||||
console.log('publish skipped.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
(async () => {
|
||||
let folders = await getWorkspaces();
|
||||
if (process.argv[2]) {
|
||||
folders = folders.filter((path) => path.startsWith(process.argv[2]));
|
||||
}
|
||||
|
||||
const spinner = ora();
|
||||
const bumpMap: Record<string, string> = {};
|
||||
|
||||
let progress = 0;
|
||||
spinner.start(`Loading workspaces (0/${folders.length})`);
|
||||
await Promise.all(folders.map(async (name) => {
|
||||
let meta: PackageJson;
|
||||
try {
|
||||
meta = require(`../${name}/package`);
|
||||
if (!meta.private) {
|
||||
const version = await latest(meta.name);
|
||||
if (gt(meta.version, version)) {
|
||||
bumpMap[name] = meta.version;
|
||||
}
|
||||
}
|
||||
} catch { /* pass */ }
|
||||
spinner.text = `Loading workspaces (${++progress}/${folders.length})`;
|
||||
}));
|
||||
spinner.succeed();
|
||||
|
||||
if (Object.keys(bumpMap).length) {
|
||||
for (const name in bumpMap) {
|
||||
console.log(`publishing ${name}@${bumpMap[name]} ...`);
|
||||
await spawnAsync(`yarn publish ${name} --new-version ${bumpMap[name]} --access public`);
|
||||
}
|
||||
}
|
||||
console.log('Release created successfully.');
|
||||
})();
|
||||
@@ -0,0 +1,42 @@
|
||||
import path from 'path';
|
||||
import globby from 'globby';
|
||||
import spawn from 'cross-spawn';
|
||||
|
||||
export const cwd = path.resolve(__dirname, '..');
|
||||
|
||||
export function getWorkspaces() {
|
||||
return globby(require('../package').workspaces, {
|
||||
cwd,
|
||||
deep: 0,
|
||||
onlyDirectories: true,
|
||||
expandDirectories: false,
|
||||
});
|
||||
}
|
||||
|
||||
export type DependencyType = 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies'
|
||||
|
||||
export interface PackageJson extends Partial<Record<DependencyType, Record<string, string>>> {
|
||||
name?: string
|
||||
private?: boolean
|
||||
version?: string
|
||||
}
|
||||
|
||||
export function spawnSync(command: string, silent?: boolean) {
|
||||
if (!silent) console.log(`$ ${command}`);
|
||||
const args = command.split(/\s+/);
|
||||
const result = spawn.sync(args[0], [...args.slice(1), '--color'], { cwd, encoding: 'utf8' });
|
||||
if (result.status) {
|
||||
throw new Error(result.stderr);
|
||||
} else {
|
||||
if (!silent) console.log(result.stdout);
|
||||
return result.stdout.trim();
|
||||
}
|
||||
}
|
||||
|
||||
export function spawnAsync(command: string) {
|
||||
const args = command.split(/\s+/);
|
||||
const child = spawn(args[0], args.slice(1), { stdio: 'inherit' });
|
||||
return new Promise((resolve, reject) => {
|
||||
child.on('close', resolve);
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user