使用ガイドを含めることにより、コマンドラインスクリプトを改善する
日常のプログラミングの冒険でJavaScriptに既に精通している場合は、簡単なコマンドラインスクリプトを作成する必要があるときにJavaScriptに到達しても、それほど衝撃的ではありません。 クイックスクリプトはやや汚れる傾向があり、通常は使用法のドキュメントが不足しています。 command-line-usage
パッケージを使用すると、プロ並みのスクリプト使用法の出力をすばやくダーティなスクリプトに簡単に追加できます。
入門
command-line-usage
を追加する必要があります。
# npm $ npm install command-line-usage --save # Yarn $ yarn add command-line-usage
必ずcommand-line-usage
をインポートしてください。
const cliUsage = require('command-line-usage');
この記事はcommand-line-usage
パッケージに焦点を当てていますが、このパッケージはchalk
テンプレートリテラル構文を活用し、chalk.red()
などのchalk
メソッドと非常にうまく機能することに注意してください。 ]。
テンプレートリテラル構文の代わりにchalk
メソッドを使用する場合は、command-line-usage
の依存関係であるchalkもインポートしてください。
const chalk = require('chalk');
chalk
の詳細については、記事Chalkを使用したコマンドラインNode.jsスクリプトからの出力のスタイリングをご覧ください。
基本的な使用法
すべてがインストールされ、適切にインポートされると、いくつかの簡単な使用情報を作成できます。
const sections = [ { header: '🐊 Alligator.io CLI Script', content: 'From {bold your friends} at {underline Alligator.io}', }, { header: 'Usage', content: [ '% script {bold --file} {underline /path/to/file} ...', ], }, ]; const usage = cliUsage(sections); console.info(usage);
sections
配列には、使用情報に表示する情報のグループが含まれています。 各セクション内のさまざまなオプションを使用して、必要な数のセクションを作成できます。
sections
配列をcommand-line-usage
で実行すると文字列が生成され、コンソールに記録できます。
リスト引数
スクリプトの引数を一覧表示するには、一連のオプションを使用するoptionList
プロパティを使用できます。
const sections = [ { header: 'Mandatory Options', optionList: [ { name: 'file', alias: 'f', type: String, typeLabel: '{underline /path/to/file}', description: 'The file to do stuff with', }, ], }, { header: 'Optional Stuff', optionList: [ { name: 'letters', alias: 'l', type: String, typeLabel: '{underline letter} ...', description: 'This option takes multiple values', multiple: true, defaultOption: 'a b c', }, { name: 'help', alias: '?', type: Boolean, description: 'Print this usage guide.', } ], }, ]; const usage = cliUsage(sections); console.info(usage);
command-line-usage
パッケージは、テーブルレイアウトで引数の間隔を空けることにより、すべてのハードワークを処理します。
テーブルレイアウト
引数リストを表示するときに使用されるテーブルレイアウトと言えば、content
プロパティを配列に渡すときにもテーブルレイアウトを使用できます。 文字列の代わりにオブジェクトの配列を渡すだけで、command-line-usage
は情報を表のようにフォーマットします。
const sections = [ { header: 'Table Layout Example', content: [ { desc: 'More great Alligator.io articles:', url: '{underline https://alligator.io}', }, { desc: '`command-line-usage` on GitHub:', url: '{underline https://git.io/fh9TQ}', }, ], }, ]; const usage = cliUsage(sections); console.info(usage);
楽しんで
時々あなたはただ楽しみたいだけです。 前述のように、command-line-usage
はchalk
を活用できます。つまり、色のスプラッシュで使用量の出力にスパイスを加えることができます。
少しクレイジーにするために、内部のデモシーンアーティストをチャネリングし、エスケープコードを備えたASCII / ANSIアートをまとめる場合は、raw
プロパティを含めて、正しく表示されるようにする必要があります。
const sections = [ { header: 'Raw Like Sushi', raw: true, content: [ '{red ,iiiiiiiiii,}', '{red ,iiiiiiiiiiiiii,}', `{red iii' 'ii'}`, `{white '.________.'}`, ], }, ]; const usage = cliUsage(sections); console.info(usage);
🍣
結論
command-line-usage
パッケージは、スクリプトの使用法情報を簡単に生成できるという点で驚くべきものですが、それでも多少不足しています。 覚えておくべきことの1つは、パッケージは実際にはコマンドライン引数の処理を行わないということです。
コマンドライン引数の実際の処理は、引数ベクトルprocess.argv
を自分で解析して独自のソリューションをローリングするか、commanderなどのパッケージを利用して処理する必要があります。
詳細については、記事Node.jsスクリプトでのコマンドライン引数の処理をご覧ください。