browser-plugin-creator
Version:
A modern scaffolding tool for creating browser extensions with ease
50 lines (49 loc) • 1.78 kB
JavaScript
import { Command } from 'commander';
import chalk from 'chalk';
import { createProject } from './commands/create.js';
import { listTemplates } from './commands/list.js';
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const { version } = require('../../package.json');
const program = new Command();
program
.name('browser-plugin-creator')
.description('A modern scaffolding tool for creating browser extensions')
.version(version);
program
.command('create')
.description('Create a new browser extension project')
.argument('<project-name>', 'name of the project')
.option('-t, --template <template>', 'template to use', 'basic-popup')
.option('-f, --force', 'overwrite existing directory')
.option('--typescript', 'use TypeScript')
.option('--no-git', 'skip git initialization')
.action(createProject);
program
.command('list')
.alias('ls')
.description('List all available templates')
.action(listTemplates);
program
.command('config')
.description('Manage configuration')
.option('--get <key>', 'get configuration value')
.option('--set <key> <value>', 'set configuration value')
.option('--list', 'list all configuration');
// 错误处理
program.configureOutput({
writeErr: (str) => process.stdout.write(chalk.red(str)),
outputError: (str, write) => write(chalk.red(str))
});
// 未识别命令处理
program.on('command:*', ([cmd]) => {
console.log(chalk.red(`Unknown command: ${cmd}`));
console.log('Run "browser-plugin-creator --help" for available commands.');
process.exit(1);
});
// 如果没有提供命令,显示帮助
if (!process.argv.slice(2).length) {
program.outputHelp();
}
program.parse();