プロンプト
プロンプトは、ユーザーの入力を受け付けるための対話型ターミナルウィジェットです。Aceプロンプトは、@poppinss/promptsパッケージによってサポートされており、次のプロンプトタイプをサポートしています。
- 入力
- リスト
- パスワード
- 確認
- トグル
- 選択
- マルチ選択
- オートコンプリート
Aceプロンプトは、テストを考慮して構築されています。テストを作成する際には、プロンプトをトラップしてプログラムで応答できます。
参考: Aceコマンドのテスト
プロンプトの表示
すべてのAceコマンドで利用可能なthis.prompt
プロパティを使用して、プロンプトを表示できます。
import { BaseCommand } from '@adonisjs/core/ace'
export default class GreetCommand extends BaseCommand {
async run() {
const modelName = await this.prompt.ask('モデル名を入力してください')
console.log(modelName)
}
}
プロンプトオプション
プロンプトで受け入れられるオプションのリストは次のとおりです。このテーブルを唯一の情報源として参照できます。
オプション | 受け入れられるプロンプト | 説明 |
|
すべてのプロンプト |
値が入力されなかった場合に使用するデフォルト値です。 |
|
すべてのプロンプト |
プロンプトのユニークな名前です。 |
|
すべてのプロンプト |
プロンプトの横に表示するヒントテキストです。 |
| すべてのプロンプト |
プロンプトの戻り値を変換します。
|
| すべてのプロンプト |
ユーザーが入力するときに入力値をライブでフォーマットします。フォーマットはCLIの出力にのみ適用され、戻り値には適用されません。
|
| すべてのプロンプト |
ユーザーの入力をバリデーションします。メソッドから
|
|
|
表示するオプションの数を制限します。残りのオプションを表示するにはスクロールする必要があります。 |
テキスト入力
prompt.ask
メソッドを使用して、テキスト入力を受け付けるためのプロンプトをレンダリングできます。メソッドは、最初のパラメータとしてプロンプトメッセージを受け入れ、2番目のパラメータとしてオプションオブジェクトを受け入れます。
await this.prompt.ask('モデル名を入力してください')
// 入力のバリデーション
await this.prompt.ask('モデル名を入力してください', {
validate(value) {
return value.length > 0
}
})
// デフォルト値
await this.prompt.ask('モデル名を入力してください', {
default: 'User'
})
マスクされた入力
名前の通り、マスクされた入力プロンプトはターミナルでユーザーの入力をマスクします。prompt.secure
メソッドを使用してマスクされたプロンプトを表示できます。
メソッドは、最初のパラメータとしてプロンプトメッセージを受け入れ、2番目のパラメータとしてオプションオブジェクトを受け入れます。
await this.prompt.secure('アカウントのパスワードを入力してください')
await this.prompt.secure('アカウントのパスワードを入力してください', {
validate(value) {
return value.length < 6
? 'パスワードは6文字である必要があります'
: true
}
})
選択肢のリスト
prompt.choice
メソッドを使用して、単一の選択肢のリストを表示できます。メソッドは次のパラメータを受け入れます。
- プロンプトメッセージ。
- 選択肢の配列。
- オプションのオプションオブジェクト。
await this.prompt.choice('パッケージマネージャーを選択してください', [
'npm',
'yarn',
'pnpm'
])
異なる表示値を指定するには、オプションをオブジェクトとして定義できます。name
プロパティがプロンプトの結果として返され、message
プロパティがターミナルに表示されます。
await this.prompt.choice('データベースドライバーを選択してください', [
{
name: 'sqlite',
message: 'SQLite'
},
{
name: 'mysql',
message: 'MySQL'
},
{
name: 'pg',
message: 'PostgreSQL'
}
])
マルチ選択の選択肢
prompt.multiple
メソッドを使用して、選択肢リストで複数の選択を許可できます。パラメータはchoice
プロンプトと同じです。
await this.prompt.multiple('データベースドライバーを選択してください', [
{
name: 'sqlite',
message: 'SQLite'
},
{
name: 'mysql',
message: 'MySQL'
},
{
name: 'pg',
message: 'PostgreSQL'
}
])
アクションの確認
prompt.confirm
メソッドを使用して、はい/いいえ
オプションを持つ確認プロンプトを表示できます。メソッドは、最初のパラメータとしてプロンプトメッセージを受け入れ、2番目のパラメータとしてオプションオブジェクトを受け入れます。
confirm
プロンプトはブール値を返します。
const deleteFiles = await this.prompt.confirm(
'すべてのファイルを削除しますか?'
)
if (deleteFiles) {
}
はい/いいえ
オプションの表示値をカスタマイズするには、prompt.toggle
メソッドを使用できます。
const deleteFiles = await this.prompt.toggle(
'すべてのファイルを削除しますか?',
['はい', 'いいえ']
)
if (deleteFiles) {
}
オートコンプリート
autocomplete
プロンプトは、選択とマルチ選択のプロンプトの組み合わせですが、選択肢をフジー検索する機能があります。
const selectedCity = await this.prompt.autocomplete(
'都市を選択してください',
await getCitiesList()
)