马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
包罗下令行选择和输入设置,远程堆栈拉取模板,根据设置将代码注入模板框架的代码中,主动创建远程堆栈,初始化git并提交至远程堆栈,方便项目开发,简化流程。
目次布局
创建一个bin文件夹,添加index.js文件,在这个文件中写下#! /usr/bin/env node
在package.json文件夹下
实行 npm link 下令,链接到本地环境中 npm link (只有本地开发必要实行这一步,正常脚手架全局安装无需实行此步调)Link 相称于将当前本地模块链接到npm目次下,这个目次可以直接访问,以是当前包就能直接访问了。默认package.json的name为基准,也可以通过bin设置别名。link完后,npm会主动帮助天生下令,之后可以直接实行cli xxx。
直接上代码bin/index.js
- #!/usr/bin/env node
- import { Command } from 'commander';
- import chalk from 'chalk';
- import figlet from 'figlet';
- import { promises as fs } from 'fs';
- import path from 'path';
- import { fileURLToPath } from 'url';
- import Creater from '../lib/create.js';
- import { getProjectName } from '../utils/index.js'; // 引入封装好的模块
- import '../utils/utils.js'
- // 解析 __dirname 和 __filename
- const __filename = fileURLToPath(import.meta.url);
- const __dirname = path.dirname(__filename);
- // 异步读取 JSON 文件并解析
- const packageJsonPath = path.resolve(__dirname, '../package.json');
- const config = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
- const program = new Command();
- // 欢迎信息
- console.log(chalk.green(figlet.textSync('Ti CLI', {
- horizontalLayout: 'full'
- })));
- program
- .command('create')
- .description('create a new project')
- .option('-f, --force', 'overwrite target directory if it exists')
- .action(async (options) => {
- // 获取工作目录
- const cwd = process.cwd();
- // 提示用户输入项目名称
- const projectName = await getProjectName(cwd);
- // 目标目录也就是要创建的目录
- const targetDir = path.join(cwd, projectName);
- const creater = new Creater(projectName, targetDir,'git密令');
- try {
- await creater.create();
- } catch (error) {
- console.error(chalk.red(`创建项目失败: ${error.message}`));
- }
- });
- program
- .command('build')
- .description('build the project')
- .action(() => {
- console.log('执行 build 命令');
- // 在这里实现 build 命令的具体逻辑
- })
复制代码 |