この記事の内容は、node.js を使用してコマンド ライン ツールを構築することです。必要な友人は参照してください。
inquirer.js: をカプセル化するパッケージです。使用されるコマンド ライン対話用の node.js モジュール。これを使用して、新しいコマンド ライン アプリケーションを簡単に構築できます。
shell.js: クロスプラットフォームの UNIX シェル コマンド モジュール。
Nodeバージョン: inquirer.jsの非同期メソッドはデフォルトでPromiseを返すため、node.js>=8を使用することをお勧めします。
オンラインにする前の最後のステップでは、テスト、コンパイル、バージョン番号の更新、送信、さらには同じコマンドの実行が必要です。これらの手順をワンクリックで自動化すると同時に、エラーや漏れを防ぐための事前チェックが実行されます。
新しい Node.js プロジェクトを作成します。
ファイル bin/my-cli.js を作成します。Node.js プロジェクトは通常、cli エントリを bin ディレクトリに配置し、他のモジュールは lib ディレクトリに配置します。
bin/my-cli.js ファイルのヘッダーに #!/usr/bin/env node
を追加します。 #!/usr/bin/env node
。
添加 "bin": {"my-cli": "./bin/my-cli.js"},
到package.json,声明我们要使用的命令。
项目根目录下执行npm link
,创建一个全局命令my-cli
。
稍微修改下my-cli.js
,添加代码console.log("I am a cli tool!")
,然后打开控制台运行my-cli
命令,如果看到控制台输出I am a cli tool!
就表示成功。
首先安装主要依赖的两个模块(关于这两个模块的使用请参考官方文档)
npm install inquirer shelljs
接下来首先实现测试、更新版本号、构建、自动提交发布的自动化
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); const { version } = await inquirer.prompt([ { type: 'list', name: 'version', message: '版本号更新方式:', choices: [ { name: `v${semver.inc(pkg.version, 'patch')}: Fix Bugs / Patch`, value: 'patch' }, { name: `v${semver.inc(pkg.version, 'minor')}: Release New Version`, value: 'minor' }, ] } ]); // 拉取最新版本 shelljs.exec('git pull'); // 运行测试 shelljs.exec('npm test'); //通过npm version更新版本号,但不自动添加git tag,而是在构建完成后由cli工具添加 shelljs.exec(`npm version ${version} --no-git-tag-version`); // 构建 shelljs.exec('npm run build'); // 提交发布代码 const nextVersion = semver.inc(pkg.version, version); shelljs.exec('git add . -A'); shelljs.exec(`git commit -m "build: v${nextVersion}"`) shelljs.exec(`git tag -a v${nextVersion} -m "build: ${nextVersion}"`); shelljs.exec("git push") shelljs.exec("git push --tags");
接下来给my-cli
添加一个功能:
当检查到package.json的my-cli
对象的check-baidu-id
属性为true
时,检查项目的config.json
是否存在baidu-id
"bin": {"my-cli": "./bin/my-cli.js"},
を package.json に追加して、使用するコマンドを宣言します。 プロジェクトのルートディレクトリでnpm link
を実行して、グローバルコマンドmy-cli
を作成します。 my-cli.js
を少し変更し、コード console.log("I am a cli tool!")
を追加して、コンソール my-cli
コマンドを実行します。コンソール出力 I am a cli tools!
が表示されたら、成功したことを意味します。
まず、主要な依存関係である 2 つのモジュールをインストールします (これら 2 つのモジュールの使用については公式ドキュメントを参照してください)
npm install recruiter shelljs
ビルドとリリースのプロセス自動化
次 まず、テスト、バージョン番号の更新、ビルド、および自動送信とリリースの自動化を実装します 次に、 以上がnode.jsを使用したコマンドラインツールの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。if (pkg['my-cli'] && pkg['my-cli']['check-baidu-id']) {
const configPath = path.join(process.cwd(), 'config.json');
if (!fs.existsSync(configPath)) {
shelljs.echo('找不到config.json');
shelljs.exit(1);
}
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
if (!config['baidu-id']) {
shelljs.echo('config.json缺少属性[baidu-id]');
shelljs.exit(1);
}
my-cli
に関数を追加します>: パッケージがチェックされるとき、json の my-cli
オブジェクトの check-baidu-id
属性が true
である場合、プロジェクトの config.json
baidu-id
属性が存在するかどうか