本示例能夠建立一個目錄、二個文件。node
mkdir projectCommand cd projectCommand lerna init lerna create testCommand lerna add commander
修改./projectCommand/packages/testCommand/package.json
npm
{ ... "bin": { ... "demo": "./bin/initProject.js", } }
在中建立./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)
在./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
把終端中命令、標記、參數等。傳入已經定義好的方法中。命令行
program.command(..).option(..)
。這個太簡單了。在./projectCommand/packages/testCommand
下執行npm unlink
code