ホームページ  >  記事  >  ウェブフロントエンド  >  node.jsを使用したコマンドラインツールの構築

node.jsを使用したコマンドラインツールの構築

不言
不言オリジナル
2018-04-10 17:04:451380ブラウズ

この記事の内容は、node.js を使用してコマンド ライン ツールを構築することです。必要な友人は参照してください。


ツールの説明

  • inquirer.js: をカプセル化するパッケージです。使用されるコマンド ライン対話用の node.js モジュール。これを使用して、新しいコマンド ライン アプリケーションを簡単に構築できます。

  • shell.js: クロスプラットフォームの UNIX シェル コマンド モジュール。

  • Nodeバージョン: inquirer.jsの非同期メソッドはデフォルトでPromiseを返すため、node.js>=8を使用することをお勧めします。

目標

オンラインにする前の最後のステップでは、テスト、コンパイル、バージョン番号の更新、送信、さらには同じコマンドの実行が必要です。これらの手順をワンクリックで自動化すると同時に、エラーや漏れを防ぐための事前チェックが実行されます。

準備

  1. 新しい Node.js プロジェクトを作成します。

  2. ファイル bin/my-cli.js を作成します。Node.js プロジェクトは通常、cli エントリを bin ディレクトリに配置し、他のモジュールは lib ディレクトリに配置します。

  3. bin/my-cli.js ファイルのヘッダーに #!/usr/bin/env node を追加します。 #!/usr/bin/env node

  4. 添加  "bin": {"my-cli": "./bin/my-cli.js"},到package.json,声明我们要使用的命令。

  5. 项目根目录下执行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

ビルドとリリースのプロセス自動化

次 まず、テスト、バージョン番号の更新、ビルド、および自動送信とリリースの自動化を実装します

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.jsonbaidu-id 属性が存在するかどうか

rrreee🎜最後のステップ🎜🎜このような単純な cli プログラムが実装され、ビルドとリリースのプロセスが自動化されます。また、構成チェックもビルドおよびリリース前に実行されます。 🎜🎜実際のプロジェクトでは、プログラムの安定性を高めるために、現在のプロジェクトにpackage.jsonが存在するかどうかを確認する、json解析エラーを防ぐ、実行前に確認するなどの機能を追加する必要もあります。サンプルコード。 🎜🎜サンプルコード🎜🎜アドレス: https://github.com/Aturan/node-cli-example🎜🎜結論🎜🎜上記の機能はシェルを使用しても実現できますが、コードを書くのはそれほど便利ではなく、高速ではありません、より複雑な問題の場合、シェルを使用して実装するのは非常に面倒であり、メンテナンスも問題になります。 🎜🎜追記:実際、Ubuntu には Python が付属しており、環境をインストールせずに直接使用できるという利点があります。 🎜🎜関連する推奨事項: 🎜🎜🎜node.js が SQL Server データベースを取得する方法の詳細な例🎜🎜🎜🎜Node.js モジュール システム🎜🎜

以上がnode.jsを使用したコマンドラインツールの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。