入門cli

overview

本示例能夠建立一個目錄、二個文件。node

init project

mkdir projectCommand
cd projectCommand
lerna init
lerna create testCommand
lerna add commander

defined

修改./projectCommand/packages/testCommand/package.jsonnpm

{
    ...
    "bin": {
        ...
        "demo": "./bin/initProject.js",

    }
}

init cli

在中建立./projectCommand/packages/testCommand/bin/initProject.js。編輯內容以下:json

#!/usr/bin/env node

const program = require('commander')
const fs = require('fs')

console.log('begin')
<!-- 定義命令 start -->
program
    .command('create <project-name>')
    .description('create a new project')
    .option('-f, --file <file>', 'name of main file')
    .option('-m, --minor', 'create minor file')
    .action((projectName, options) => {
        console.log('projectName', projectName)
        console.log('options', options)
        fs.mkdir(`./${projectName}`, (error) => {
        if (error) {
            console.log('項目已經存在,不能再次建立。')
        } else {
            console.log('建立目錄成功')
            fs.writeFile(`./${projectName}/${options.file}`, 'this is main file.', (err) => {
                if (err) {
                    console.log('建立主文件失敗')
                } else {
                    console.log('建立主文件成功')
                }
            })
            if (options.minor) {
                fs.writeFile(`./${projectName}/minor.md`, 'this is minor file.', (err) => {
                    if (err) {
                        console.log('建立主文件失敗')
                    } else {
                        console.log('建立主文件成功')
                    }
                })
            }
        }
    })
})
<!-- 定義命令 end -->

// 解析命令。即根據輸入到終端的內容執行相應命令。
program.parse(process.argv)

usage

在本包中使用命令

./projectCommand/packages/testCommand下執行npm link
再執行initProject create li -f main.js -m,則輸出:ui

begin
projectName li
options { file: 'main.js', minor: true }
建立目錄成功
建立主文件成功
建立主文件成功

若執行initProject create li1 -f main.js,也會執行相應輸出。this

後記

commander作的工做

把終端中命令、標記、參數等。傳入已經定義好的方法中。命令行

寫一個命令行須要什麼

  1. 會用commander就行。主要是program.command(..).option(..)。這個太簡單了。
  2. 有必定node.js的基礎。這點須要一些知識儲備。

恢復工做

./projectCommand/packages/testCommand下執行npm unlinkcode

相關文章
相關標籤/搜索