以前の演習では、TypeScriptを使用してブラウザ拡張機能を構築しました。これには、Viteプロジェクトの作成や、ブラウザ拡張機能の特定の要件を満たすためにカスタマイズするなど、一連の手順が含まれます。このプロセスは特に長くも複雑でもありませんでしたが、ノードCLI(コマンドラインインターフェイス)で自動化することでさらに簡素化できます。あなたがCLISを初めて使用するなら、私が作成したものをあなたに歩かせてください!
当然、最初のステップはノードプロジェクトを初期化してセットアップすることです。次のコマンドを使用して、コードのフォルダーを作成し、基本的なパッケージを生成します。JSONファイル:
mkdir create-browser-extension-vite && cd create-browser-extension-vite npm init --yes
次に、生成されたpackage.jsonを変更して「タイプ」:「モジュール」を含めることにしました。これにより、プロジェクト内の.JSファイルを一般的なモジュールではなくESモジュールとして解釈するようにノードに通知します。いくつかの調整を行った後の更新されたpackage.jsonは次のとおりです。
{ "name": "create-browser-extension-vite", "version": "1.0.0", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "publishConfig": { "access": "public" }, "keywords": [ "cli", "create-project" ], "author": "", "license": "ISC", "description": "A CLI tool to create browser extensions with Vite", "type": "module" }
は、 create-project という名前の新しいフォルダー bin :
で呼ばれるファイルを作成することから始めましょう。
#!/usr/bin/env node console.log("hello world");
このファイルは、コマンドのエントリポイントとして機能し、パッケージがグローバルにインストールされたら、コンピューターにを直接実行できることを確認します。 ]
"bin": "bin/create-project"今、私たちがこれまでに構築したものをテストする時が来ました。まず、実行してパッケージをローカルにインストールします。
npmリンク
Create-Browser-Extension-Vite // CLIを実行します
npm link create-browser-extension-vite // execute the CLI
そして、それが基本的なCLIを作成するのに必要なすべてです!ここから、ノードエコシステムの全力を活用して、想像できるものをすべて構築できます。
ユーザー入力の処理
ファイルから呼び出されます。
#!/usr/bin/envノード
"../src/cli.js"から{cli}をインポートします。
cli(process.argv);
#!/usr/bin/env node import { cli } from "../src/cli.js"; cli(process.argv);npmインストール @Inquirer/Prompts arg
npm install @inquirer/prompts arg@Inquirer/Prompts:エレガントでインタラクティブなコマンドラインインターフェイスを作成するためのライブラリ。
import arg from "arg"; import { confirm } from "@inquirer/prompts"; async function promptForMissingOptions(options) { if (options.skipPrompts) { return options; } return { ...options, git: options.git || (await confirm({ message: "Initialize a git repository?" })), }; } function parseArgumentsIntoOptions(rawArgs) { const args = arg( { "--git": Boolean, "--help": Boolean, "--yes": Boolean, "--install": Boolean, "-g": "--git", "-y": "--yes", "-i": "--install", }, { argv: rawArgs.slice(2), } ); return { skipPrompts: args["--yes"] || false, git: args["--git"] || false, runInstall: args["--install"] || false, projectName: args._[0], }; } export async function cli(args) { let options = parseArgumentsIntoOptions(args); options = await promptForMissingOptions(options); console.log(options); }
このステップでは、プロジェクトは前の段階で選択された設定に基づいて作成されます。まず、テンプレートという名前のフォルダーを作成し、生成されたプロジェクトを構成するファイルをコピーすることから始めます。
当社のコードは、テンプレートフォルダー内のファイルを利用してユーザーの新しいブラウザー拡張機能を生成し、次のパッケージはこれを達成するのに特に役立ちます。
npmインストールncp chalk execa pkg-install listr
NCP:ファイルの再帰コピーを促進します。
npm install ncp chalk execa pkg-install listr
"chalk"からチョークをインポートします。
「NCP」からNCPをインポートします。
「パス」からパスをインポートします。
「util」から{promisify}をインポートします。
「execa」から{execa}をインポートします。
「Listr」からListrをインポートします。
「pkg-install」から{projectinstall}をインポートします。
const copy = promisify(ncp);
async関数copytemplatefiles(options){
return copy(options.templatedirectory、options.targetdirectory、{
Clobber:false、
});
}
async関数initgit(options){
const result = await execa( "git"、["init"]、{
CWD:options.targetDirectory、
});
if(result.failed){
promise.reject(new Error( "Gitの初期化に失敗した"));
}
戻る;
}
async関数createproject(options)をエクスポートする{
options = {
...オプション、
TargetDirectory:options.ProjectName || process.cwd()、
};
const currentFileurl = import.meta.url;
const templatedir = path.resolve(
new URL(currentFileUrl).puthname、
"../../テンプレート"
);
options.templatedirectory = templatedir;
const tasks = new Listr([[
{
タイトル:「プロジェクトファイルのコピー」、
タスク:()=> copyTemplateFiles(オプション)、
}、
{
タイトル:「Gitを初期化」、
タスク:()=> initgit(options)、
有効:()=> options.git、
}、
{
タイトル:「依存関係をインストール」、
タスク:()=>
ProjectInstall({
CWD:options.targetDirectory、
})、
スキップ:()=>
!options.runinstall
? 「パス - 依存関係を自動的にインストールするためのインストール」
: 未定義、
}、
]);
tasks.run()を待ちます。
console.log( "%s Project Ready"、chalk.green.bold( "done"));
trueを返します。
}
#!/usr/bin/env node import { cli } from "../src/cli.js"; cli(process.argv);それだけです!これらは、新しいCLIツールを作成するための手順であり、新しいブラウザー拡張機能の作成を合理化するために使用するステップです。あなたもそれを使用することができます!誰でも自分の拡張機能を生成するためにNPMに公開したからです。
#!/usr/bin/env node import { cli } from "../src/cli.js"; cli(process.argv);https://github.com/ivaneffable/create-browser-extension-vite
参照
node.jsでCLIを構築する方法
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3