搭建自己的脚手架,实现公司内部前端工程化

553 阅读1分钟

1.将vue基础脚手架+项目中通用的内容上传到github

2.将下载自己的脚手架的环境依赖包上传到npm

3.通过 npm i lcj-vue-cli 安装依赖包

4.通过命令 lcj-vue-cli init 下载github上上传的项目

依赖包主要代码

#! /usr/bin/env node

const program = require('commander');
const fs = require('fs')
const inquirer = require('inquirer')
const chalk = require('chalk')
const { exec } = require('child_process')

program.version('1.0.0', '-v, --version')
    .command('init')
    .action(() => {
        inquirer.prompt([{
            type: 'input', // 问题类型为填空题
            message: 'your  projectName:', // 问题描述
            name: 'projectName', // 问题对应的属性
            validate: (val) => { // 对输入的值做判断
                if (val === "") {
                    return chalk.red('项目名不能为空,请重新输入')
                }
                return true
            }
        }]).then(answer => { // 通过用户的输入进行各种操作
            console.log(chalk.green('开始初始化文件\n'))
            console.log(chalk.gray('初始化中...'))
            const gitUrl = 'https://github.com/Daisylcj/lcj-cli-vue.git'
            exec(`git clone ${gitUrl} ${answer.projectName}`, (error, stdout, stderr) => {
                if (error) { // 当有错误时打印出错误并退出操作
                    console.log(chalk.red(error))
                    process.exit()
                }
                fs.readFile(`${process.cwd()}/${answer.projectName}/package.json`, (err, data) => {
                    if (error) {
                        console.log(chalk.red('读取文件失败'))
                        process.exit()
                    }
                    data = JSON.parse(data.toString())
                    data.name = answer.projectName
                    fs.writeFile(`${process.cwd()}/${answer.projectName}/package.json`, JSON.stringify(data, "", "\t"), err => {
                        if (err) {
                            console.log(chalk.red('写入文件失败'))
                            process.exit()
                        }
                        console.log(chalk.green('初始化完成'))
                        process.exit() // 退出这次命令行操作
                    })
                })
            })
        })
    });
program.parse(process.argv);