入门cli

Posted 飞机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门cli相关的知识,希望对你有一定的参考价值。

overview

本示例可以创建一个目录、二个文件。

init project

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

defined

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

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

    }
}

init cli

在中创建./projectCommand/packages/testCommand/bin/initProject.js。编辑内容如下:

#!/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,则输出:

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

若执行initProject create li1 -f main.js,也会执行相应输出。

后记

commander做的工作

把终端中命令、标记、参数等。传入已经定义好的方法中。

写一个命令行需要什么

  1. 会用commander就行。主要是program.command(..).option(..)。这个太简单了。
  2. 有一定node.js的基础。这点需要一些知识储备。

恢复工作

./projectCommand/packages/testCommand下执行npm unlink

以上是关于入门cli的主要内容,如果未能解决你的问题,请参考以下文章

推荐net开发cad入门阅读代码片段

markdown WordPress片段:使用WP CLI检查数据库

vue-cli从入门到放弃

Alfred常见使用

webpack入门——构建简易版vue-cli

前端技术 | vue-cli “从入门到放弃”