概要
Nuxt.jsにおいて新規プロジェクトを作成するnpm init nuxt-app {ディレクトリ名}
をDockerfileで実施するのに躓いてしまったので、メモを兼ねて記載。
やりたいこと
Nuxt.jsの新規プロジェクト作成における、「コマンドライン上の質問(プロジェクト名や使用言語など)」を自動で入力し、Dockerイメージをbuildするタイミングで新規プロジェクトも作っちゃいたい。
解決策
質問に対する回答を入力するためのjsonテキストを作成しておき、--answer
オプションを付けてコマンドを実行する。
Dockerfile
FROM node:14
USER node
WORKDIR /home/node
RUN npm install create-nuxt-app
RUN npm init nuxt-app src --answers "{ \
\"name\": \"kotonoha-app\", \
\"language\": \"ts\", \
\"pm\": \"npm\", \
\"ui\": \"balm-ui\", \
\"features\": \"axios\", \
\"linter\": \"eslint\", \
\"test\" : \"none\", \
\"mode\" : \"universal\", \
\"target\" : \"server\", \
\"devTools\": \"dependabot\", \
\"ci\": \"github-actions\", \
\"gitUsername\": \"itezora-nonoha\", \
\"vcs\": \"git\" }"
対話入力時の後ろの方の質問は、「前の質問に対する回答によっては出現しない」ことがある。
しかし、--answer
をオプションを使用する際のjsonについては「問われない選択項目に対する回答」も入れておかないとコマンド実行に失敗してしまうため注意。上記例だとci
項目などは対話入力においては不要
create-nuxt-appのヘルプ内容
参考リンク
-
prompt.js - nuxt/create-nuxt-app(GitHub)
- jsonで流し込むkey-valueの参照に使用