使用node开发脚手架

const program = require('commander')
const download = require('download-git-repo')
const inquirer = require('inquirer')
const fs = require('fs')
const Handlebars = require('handlebars')
const ora = require('ora')
const chalk = require('chalk')
const symbols = require('log-symbols')


program.version('1.0.0', '-v,--version')//获取版本
    .command('init <name>')//创建项目名
    .action((name) => {
        if(!fs.existsSync(name)){//判断项目名是否存在
            inquirer.prompt([{//问题
                    type: 'input',
                    name: 'author',
                    message: '请输入作者名称'
                },
                {
                    type: 'input',
                    name: 'description',
                    message: '请输入描述信息'
                }
            ]).then((answers) => {//回答问题之后
                const spinner = ora('正在下载模版...')//ora 来提示用户正在下载中
                spinner.start()
                //下载地址github地址:+项目名称+#分支名称
                download('https://github.com:yiyibao/node-express#master', name, (err) => {
                    if(err){//下载失败
                        spinner.fail()
                        console.log(symbols.error, chalk.red(err))
                    }else{//下载成功
                        spinner.succeed()
                        const fileName = `${name}/package.json`//写入下载的package.json文件
                        const meta = {
                            name,
                            description: answers.description,
                            author: answers.author
                        }
                        if(fs.existsSync(fileName)){
                            const content = fs.readFileSync(fileName).toString()
                            const result = Handlebars.compile(content)(meta)
                            fs.writeFileSync(fileName, result)
                        }
                        console.log(symbols.success, chalk.green('项目初始化完成'))
                    }
                })
            })
        }else{
            console.log(symbols.error,chalk.red('项目已存在'))
        }
    })




program.parse(process.argv)

  

发布npm包

添加账户

npm adduser
  • 1

填入自己的npm账户名、密码和邮箱即可

发布npm包

npm publish
  • 1

进入npm个人中心,可以看到自己的npm包已经发布在上面了

猜你喜欢

转载自www.cnblogs.com/yiyi17/p/9234778.html