目次
初期化
Chalk コマンド ライン出力のカラフルなフォント
下载模板
代码地址
ホームページ ウェブフロントエンド jsチュートリアル mycliコマンドラインツールのノード実践開発

mycliコマンドラインツールのノード実践開発

Jun 06, 2022 pm 06:58 PM
nodejs node.js node

この記事では、node の実戦を段階的に理解し、ノードに基づいた mycli コマンド ライン ツール/スキャフォールディングの作成方法について説明します。

mycliコマンドラインツールのノード実践開発

初期化

まず、コンピューター上に node.js 環境があることを確認します。

コマンド ラインで次のコードを実行して、package.json ファイル

npm init -y
ログイン後にコピー

を初期化します。このとき、コマンドを実行すると必ずエラーが報告されます。行は mycli を実行します。

mycliコマンドラインツールのノード実践開発

カスタム コマンドの構成

package.json Add bin フィールド、関連付けられた myclicommand

  • 各コマンドは、実行可能ファイル
  "bin": {
    "mycli": "./test.js"
  },
ログイン後にコピー
  • New/test に対応します。 jsFile
console.log("mycli命令执行成功");
ログイン後にコピー
ログイン後にコピー
  • には install インストール コマンドが必要ですが、プロジェクトはまだ npm に公開されていないため、npm リンク##を使用してください#Command、mycli コマンドをグローバル ワールドに関連付けます。
この時点で、コマンド ライン

mycli を実行しても、それ以上エラーは報告されません。

mycliコマンドラインツールのノード実践開発

#スクリプト構成test.js ファイル:

console.log("mycli命令执行成功");
ログイン後にコピー
ログイン後にコピー

次に # を実行します。 ##mycli

、エラー ポップアップ ウィンドウが表示されます

これは、mycliコマンドラインツールのノード実践開発mycli

コマンドを実行すると、Let と同等であるためです。コンピュータはこのファイルを実行しますが、コンピュータ システム

は js ファイル を直接実行できません。これには、スクリプト コードの最初の行に構成を追加して、node.js## を指定する必要があります。 #このjsスクリプトファイルを実行するプログラム。

#!/usr/bin/env node
ログイン後にコピー
実行環境を変更したため、以前にリンクしたファイルを削除する必要があります。ファイルの場所は C:\Program Files\nodejs\node_modules である可能性があります。

mycli# を見つけてください。 ## を削除してから、

npm link を再度実行します。 次に、コンソールで mycli を実行すると、コンソールが正しく印刷されることがわかります。

関連ツールキットの使用

Chalk コマンド ライン出力のカラフルなフォント

  • Oraロードの効果は、進行状況ライブラリ
  • commander デザイン コマンド
  • inquirer インタラクティブ機能 (質問するなど) と似ています。
  • Chalk

インストール

npm install chalk@4.1.2 -S
ログイン後にコピー

    test.js# を使用する
  • ##
    const chalk = require("chalk");
    
    // chalk
    // const hello = chalk.red("hello");
    // const hello = chalk.blue.bgRed("hello");
    // const hello = chalk.blue.bgYellow("hello");
    const hello = chalk.rgb(200, 200, 200).bgRgb(0, 200, 3)("hello");
    console.log(hello);
    ログイン後にコピー
  • ##Ora

mycliコマンドラインツールのノード実践開発

インストール

npm install ora@4.0.3 -S
ログイン後にコピー
test.js を使用する

    const ora = require("ora");
    
    // ora
    const spinner = ora({
      text: "安装中..."
    });
    spinner.start();
    setTimeout(() => {
      // spinner.stop();
      spinner.succeed("安装成功");
      // console.log("安装成功");
    }, 2000)
    ログイン後にコピー
  • 一般的に使用される API
  • start
  • 読み込み開始
  • stop
      読み込みを停止します
    • succeed
    • 成功したスタイルで読み込みを終了します
  • #コマンダー

mycliコマンドラインツールのノード実践開発

開発で一般的に使用されるコマンド (

vue -V git --version vue Create

など)コマンドを実装したい場合は、

commander ライブラリを使用する必要があります。 使用したコマンドの後ろにある -V --help などはコマンドのパラメータとして理解できるので、これらのパラメータを取得して判断する必要があります。さまざまなイベントを処理するには、さまざまなパラメータが使用されます。

node 環境では、process.argv を通じてこのパラメーターを取得できます。 commander

ライブラリは、ユーザーの入力によって伝えられる命令を判断することなく、いくつかのメソッドをカプセル化するのに役立ちます。

インストール

npm install commander@8.2.0 -S
ログイン後にコピー
使用

    const commander = require("commander");
    // ...
    commander.parse(process.argv); // 放在后面
    ログイン後にコピー
  • インストールが完了すると、
  • commander
が自動的に起動されます。
    --help
  • などのいくつかのコマンドを以下でテストしてみましょう:
  • mycli --help
    ログイン後にコピー

はバージョン番号を設定するメソッドを提供します

commander.version("1.0.0");
ログイン後にコピー
Execute mycli -V

コンソールに
    1.0.0
  • のバージョン番号が出力されることがわかります。

カスタム コマンド メソッドcommander.option(コマンド名、説明、コールバック関数)

の一部上で書かれた関数は

--init

コマンドに設定されています:

commander.option("--init", "this is init", () => {
  // chalk
  // const hello = chalk.red("hello");
  // const hello = chalk.blue.bgRed("hello");
  // const hello = chalk.blue.bgYellow("hello");
  const hello = chalk.rgb(200, 200, 200).bgRgb(0, 200, 3)("hello");
  console.log(hello);

  // ora
  const spinner = ora({
    text: "安装中..."
  });
  spinner.start();
  setTimeout(() => {
    // spinner.stop();
    spinner.succeed("安装成功");
    // console.log("安装成功");
  }, 1000)
})
ログイン後にコピー

ここで
    mycli --init
  • テストを実行します:
  • 在指令中传递参数的写法
commander.option("--number <num>", "log a number", (num) => {
  console.log(num);
})
ログイン後にコピー

<参数名>表示必传的参数,[参数名]表示非必传的参数。控制台输入mycli --number 100回车,可以看到会输出100

自定义命令方法

commander.command("create <projectName>").action((projectName)=>{
  console.log(projectName);
})
ログイン後にコピー

执行 mycli create xx 回车,控制台可以看到 输出了xx

查看帮助

执行 mycli --help,可以看到我们刚才配置的指令和命令都出现在了帮助列表里。

mycliコマンドラインツールのノード実践開発

inquirer

  • 安装
npm install inquirer -S
ログイン後にコピー
  • prompt提问的方法
  inquirer.prompt([
    {
      type: "input",
      name: "username",
      message: "请输入用户名:"
    }
  ]).then((answer)=>{

  })
ログイン後にコピー

type表示问题的类型,取值可能是:input, number, password, editor等。

answer{username: 输入的值}

  • type是输入类型的 input
const inquirer = require("inquirer");

commander.command("add user").action(() => {
  inquirer.prompt([
    {
      type: "input",
      name: "username",
      message: "请输入用户名:"
    }
  ]).then((answer) => {
    console.log(answer);
  })
})
ログイン後にコピー
  • type是判断类型的 confirm
commander.command("testcon").action(() => {
  inquirer.prompt([
    {
      type: "confirm",
      name: "age",
      message: "是否大于18岁?"
    }
  ]).then((answer) => {
    console.log(answer);
  })
})
ログイン後にコピー

输入yn来进行判断。

mycliコマンドラインツールのノード実践開発

  • type是单选类型 list
commander.command("testlist").action(() => {
  inquirer.prompt([
    {
      type: "list",
      name: "lib",
      message: "选择用到的框架:",
      choices: [
        "vue2",
        "vue3",
        "react",
        "svelte",
      ]
    }
  ]).then((answer) => {
    console.log(answer);
  })
})
ログイン後にコピー

执行 mycli testlist 命令:

mycliコマンドラインツールのノード実践開発

下载模板

  • download-git-repo是一个拉取代码的工具。

  • 安装

npm install download-git-repo@3.0.2 -S
ログイン後にコピー
  • 使用
const downgit = require("download-git-repo");

downgit("github:kongcodes/vue3-vant", downUrl, { clone: false }, function (err) {
    console.log(err)
})
ログイン後にコピー

downgit方法里面的第一个参数理解为在github上面下载kongcodes用户的vue3-vant项目模板。第二个参数downUrl 为要将模板下载到什么目录下。第三个参数clone 是否要用git clone下载。第四个参数 为下载完成执行的一些事情。

  • 结合command方法使用
commander.command("create <projectName>").action((projectName) => {
  const spinner = ora({
    text: "正在下载https://github.com/kongcodes/vue3-vant..."
  });
  spinner.start();
  fs.mkdirSync(`./${projectName}`);
  const downUrl = `${process.cwd()}\\${projectName}`;
  downgit("github:kongcodes/vue3-vant", downUrl, { clone: false }, function (err) {
    if (err) throw err;
    spinner.stop();
    console.log(chalk.green("downgit success"));
  })
})
ログイン後にコピー

执行 mycli create pro 回车,会在当前目录下创建pro目录,下载vue3-vant模板到这个目录里。

代码地址

https://github.com/kongcodes/mycli

更多node相关知识,请访问:nodejs 教程

以上がmycliコマンドラインツールのノード実践開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

NodejsとTomcatの違い NodejsとTomcatの違い Apr 21, 2024 am 04:16 AM

Node.js と Tomcat の主な違いは次のとおりです。 ランタイム: Node.js は JavaScript ランタイムに基づいていますが、Tomcat は Java サーブレット コンテナです。 I/O モデル: Node.js は非同期ノンブロッキング モデルを使用しますが、Tomcat は同期ブロッキング モデルです。同時実行処理: Node.js はイベント ループを通じて同時実行を処理しますが、Tomcat はスレッド プールを使用します。アプリケーション シナリオ: Node.js はリアルタイム、データ集約型、同時実行性の高いアプリケーションに適しており、Tomcat は従来の Java Web アプリケーションに適しています。

Nodejsとvuejsの違い Nodejsとvuejsの違い Apr 21, 2024 am 04:17 AM

Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Nodejs はバックエンド フレームワークですか? Nodejs はバックエンド フレームワークですか? Apr 21, 2024 am 05:09 AM

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Apr 21, 2024 am 05:18 AM

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Nodejs はバックエンド開発言語ですか? Nodejs はバックエンド開発言語ですか? Apr 21, 2024 am 05:09 AM

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Nodejsのグローバル変数とは何ですか Nodejsのグローバル変数とは何ですか Apr 21, 2024 am 04:54 AM

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

NodejsとJavaの間に大きな違いはありますか? NodejsとJavaの間に大きな違いはありますか? Apr 21, 2024 am 06:12 AM

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

NodejsとJavaのどちらを選択しますか? NodejsとJavaのどちらを選択しますか? Apr 21, 2024 am 04:40 AM

Web 開発において Node.js と Java にはそれぞれ長所と短所があり、どちらを選択するかはプロジェクトの要件によって異なります。 Node.js はリアルタイム アプリケーション、迅速な開発、マイクロサービス アーキテクチャに優れており、Java はエンタープライズ グレードのサポート、パフォーマンス、セキュリティに優れています。

See all articles