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包已经发布在上面了