如何搭建node脚手架项目

为什么搭建脚手架脚手架的作用不多赘述,废话不多说


1.自定义全局命令
创建项目文件 mycli
npm init

根目录创建bin目录,bin目录下新建 cli.js
cli.js加上这句话.从环境变量获取node,毕竟大家安装的位置不一样

#! /usr/bin/env node

修改package.json

"bin": {
    "mycli": "bin/cli.js"
  },

命令全局化挂起

npm link

//原生处理命令,输入下面代码测试

mycli --help
console.log(process.argv)

得到结果

[
  'C:\\Program Files\\nodejs\\node.exe',
  'C:\\Users\\admin\\AppData\\Roaming\\npm\\node_modules\\mycli\\bin\\cli.js',
'--help'
]

//由此看出我们可以通过下面代码来设置指令,比如help
if process.argv[2] == '--help' dosomething
 
2.处理自定义全局指令-commander插件

中文地址:https://github.com/tj/commander.js/blob/HEAD/Readme_zh-CN.md#%e5%ae%89%e8%a3%85
官方提供的commander使用方法

const { program } = require('commander');

program
  .option('--first')
  .option('-s, --separator <char>');

program.parse();

const options = program.opts();
const limit = options.first ? 1 : undefined;
console.log(program.args[0].split(options.separator, limit));

脚手架项目代码commander,后面要模块化拆分,这里是个使用的方法
项目搭建完会把代码放到github

const { program } = require('commander')
program.option('-l --look <look>', '查看')
program
  .command('creat <project> [arrs...]')
  .alias('crt')
  .description('创建')
  .action((project, args) => {
    console.log(project)
    console.log(args)
  })
program.parse(process.argv)
3命令行问答交互-inquirer插件
安装
//npm install --save inquirer//这会安装最新版 不支持require
//使用require方式安装
npm install --save inquirer@^8.0.0
官方地址:https://www.npmjs.com/package/inquirer
官方使用案例

//import inquirer from 'inquirer'; // 9.x版本支持import这样引入
const inquirer = require('inquirer');


inquirer
  .prompt([
    /* Pass your questions in here */
  ])
  .then((answers) => {
    // Use user feedback for... whatever!!
  })
  .catch((error) => {
    if (error.isTtyError) {
      // Prompt couldn't be rendered in the current environment
    } else {
      // Something else went wrong
    }
  });
4.下载远程仓库模板代码-download-git-repo插件

官方地址:https://www.npmjs.com/package/download-git-repo

安装
npm install download-git-repo
使用
//我的是github仓库, 使用ssh方式 
//zycxwd/serverblog 用户名/仓库名
//传参的 project是变量,对应创建的文件名称
const download = require('download-git-repo')
  download('github:zycxwd/serveblog', project, function (err) {
  console.log(err ? 'Error:' : 'Success:')
 })
5.命令行下载等待loading动画提示--ora插件

官方地址:https://www.npmjs.com/package/ora/v/5.4.1

安装

可以看到目前6版本都是import安装,
教大家一个方法我常用的就是
找到versions看到下看下载最多的,直接就能看到下载最多有700多w次的5.x点进去看就是require方式
所以直接安装5版本

npm install ora@5
使用
//官方案例
const ora = require('ora');

const spinner = ora('Loading unicorns').start();

setTimeout(() => {
    spinner.color = 'yellow';
    spinner.text = 'Loading rainbows';
}, 1000);

//项目中使用
const spinner = ora('Loading unicorns').start()
spinner.text = '下载中,请等待...'
download('github:zycxwd/serveblog', project, function (err) {
   if (!err) {
      spinner.succeed('下载成功!')
      return
   }
   spinner.fail(err)
})
6.命令行美化--chalk插件
安装

同ora一样,我们看到新版本是import方式,找打versinos找下载最多的看到是4.x,并且看到确实是require方式就用它就好了

npm i chalk@4.1.2
使用
const chalk = require('chalk');

console.log(chalk.blue('Hello world!'));
7.项目地址

github:https://github.com/zycxwd/mycli

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容