feat: 更新构建配置,修复解析逻辑并添加程序入口
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env bun
|
#!/usr/bin/env bun
|
||||||
import { parse } from '../dist/app.js';
|
import { parse } from '../dist/program.js';
|
||||||
|
|
||||||
const args = process.argv.slice(2);
|
const args = process.argv.slice(2);
|
||||||
const result = parse(args);
|
const result = await parse(args);
|
||||||
|
console.log(result, args);
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ import { buildWithBun } from './src/index.ts'
|
|||||||
|
|
||||||
// await buildWithBun({ dts: true })
|
// await buildWithBun({ dts: true })
|
||||||
|
|
||||||
await buildWithBun({ naming: 'app', entry: 'src/index.ts', dts: true });
|
await buildWithBun({ naming: 'app', entry: 'src/index.ts', dts: true });
|
||||||
|
await buildWithBun({ naming: 'program', entry: 'src/program.ts', dts: true });
|
||||||
1
demo/src/index.ts
Normal file
1
demo/src/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
console.log('abc')
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@kevisual/code-builder",
|
"name": "@kevisual/code-builder",
|
||||||
"version": "0.0.5",
|
"version": "0.0.6",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
57
src/index.ts
57
src/index.ts
@@ -1,7 +1,7 @@
|
|||||||
import { execSync } from 'node:child_process';
|
import { execSync } from 'node:child_process';
|
||||||
import { BuildConfig } from 'bun';
|
import { BuildConfig } from 'bun';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import fs from 'node:fs';
|
|
||||||
type EntryOptions = {
|
type EntryOptions = {
|
||||||
/** 入口文件路径 */
|
/** 入口文件路径 */
|
||||||
entry?: string;
|
entry?: string;
|
||||||
@@ -82,58 +82,3 @@ export const buildWithBun = async (options: EntryOptions = {}) => {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
export const parse = async () => {
|
|
||||||
const { Command } = await import('commander');
|
|
||||||
const program = new Command();
|
|
||||||
program
|
|
||||||
.name('code-builder')
|
|
||||||
.description('使用 Bun 的代码构建工具')
|
|
||||||
.version('0.0.3');
|
|
||||||
const build = new Command('build').description('使用 Bun 构建项目');
|
|
||||||
build
|
|
||||||
.option('-e, --entry <path>', '入口文件', 'src/index.ts')
|
|
||||||
.option('-o, --outDir <path>', '输出目录', './dist')
|
|
||||||
.option('-n, --naming <name>', '输出文件命名', 'app')
|
|
||||||
.option('-t, --target <target>', '构建目标 (node 或 browser)', 'node')
|
|
||||||
.option('--dts', '生成 TypeScript 声明文件', false)
|
|
||||||
.option('--clean', '清理输出目录', false)
|
|
||||||
.action(async (options) => {
|
|
||||||
const cwd = process.cwd();
|
|
||||||
|
|
||||||
await buildWithBun({
|
|
||||||
entry: options.entry,
|
|
||||||
cwd,
|
|
||||||
outDir: options.outDir,
|
|
||||||
naming: options.naming,
|
|
||||||
target: options.target,
|
|
||||||
dts: options.dts,
|
|
||||||
clean: options.clean,
|
|
||||||
});
|
|
||||||
program.addCommand(build);
|
|
||||||
|
|
||||||
const init = new Command('init').option('-f, --force', 'force').description('初始化build配置文件');
|
|
||||||
init
|
|
||||||
.action((opts) => {
|
|
||||||
const cwd = process.cwd();
|
|
||||||
const configPath = path.join(cwd, 'bun.config.ts');
|
|
||||||
const template = `import { buildWithBun } from '@kevisual/code-builder';
|
|
||||||
|
|
||||||
await buildWithBun({ naming: 'app', entry: 'src/index.ts', dts: true, clean: true });
|
|
||||||
`;
|
|
||||||
const exists = fs.existsSync(configPath);
|
|
||||||
if (exists && !opts?.force) {
|
|
||||||
console.error('bun.config.ts 已存在,使用 --force 强制覆盖');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
execSync(`echo "${template}" > ${configPath}`, {
|
|
||||||
stdio: 'inherit',
|
|
||||||
cwd,
|
|
||||||
});
|
|
||||||
console.log('已生成 bun.config.ts 配置文件');
|
|
||||||
});
|
|
||||||
|
|
||||||
program.addCommand(init);
|
|
||||||
|
|
||||||
program.parse(process.argv);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
56
src/program.ts
Normal file
56
src/program.ts
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import { Command } from 'commander';
|
||||||
|
import path from 'node:path';
|
||||||
|
import fs from 'node:fs';
|
||||||
|
import { buildWithBun } from './index.ts';
|
||||||
|
import { execSync } from 'node:child_process';
|
||||||
|
const program = new Command();
|
||||||
|
program
|
||||||
|
.name('code-builder')
|
||||||
|
.description('使用 Bun 的代码构建工具')
|
||||||
|
.version('0.0.3');
|
||||||
|
const build = new Command('build').description('使用 Bun 构建项目');
|
||||||
|
build
|
||||||
|
.option('-e, --entry <path>', '入口文件', 'src/index.ts')
|
||||||
|
.option('-o, --outDir <path>', '输出目录', './dist')
|
||||||
|
.option('-n, --naming <name>', '输出文件命名', 'app')
|
||||||
|
.option('-t, --target <target>', '构建目标 (node 或 browser)', 'node')
|
||||||
|
.option('--dts', '生成 TypeScript 声明文件', false)
|
||||||
|
.option('--clean', '清理输出目录', false)
|
||||||
|
.action(async (options) => {
|
||||||
|
const cwd = process.cwd();
|
||||||
|
await buildWithBun({
|
||||||
|
entry: options.entry,
|
||||||
|
cwd,
|
||||||
|
outDir: options.outDir,
|
||||||
|
naming: options.naming,
|
||||||
|
target: options.target,
|
||||||
|
dts: options.dts,
|
||||||
|
clean: options.clean,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
program.addCommand(build);
|
||||||
|
const init = new Command('init').option('-f, --force', 'force').description('初始化build配置文件');
|
||||||
|
init
|
||||||
|
.action((opts) => {
|
||||||
|
const cwd = process.cwd();
|
||||||
|
const configPath = path.join(cwd, 'bun.config.ts');
|
||||||
|
const template = `import { buildWithBun } from '@kevisual/code-builder';
|
||||||
|
|
||||||
|
await buildWithBun({ naming: 'app', entry: 'src/index.ts', dts: true, clean: true });
|
||||||
|
`;
|
||||||
|
const exists = fs.existsSync(configPath);
|
||||||
|
if (exists && !opts?.force) {
|
||||||
|
console.error('bun.config.ts 已存在,使用 --force 强制覆盖');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
execSync(`echo "${template}" > ${configPath}`, {
|
||||||
|
stdio: 'inherit',
|
||||||
|
cwd,
|
||||||
|
});
|
||||||
|
console.log('已生成 bun.config.ts 配置文件');
|
||||||
|
});
|
||||||
|
|
||||||
|
program.addCommand(init);
|
||||||
|
export const parse = async () => {
|
||||||
|
program.parse(process.argv);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user