そうだ、教祖になろう。出エジプト記 第4章1節 Cloud9にVue.js開発環境を導入する
「どうして、この山のような仕事を一人だけで片づけようとするのか。」
第3章が長かったせいでシナイ半島をだいぶさまよった気になりましたが、まだサーバサイドがなんとか動いただけです。
預言します。
「おお、見よ!第4章はもっと長くなるであろう!」
海ならぬ腹を割ったところで、クライアントサイドの準備をしていきましょう。
創世記で触れましたが、Vue.jsとはSPAフレームワークです。
といっても、結局ブラウザで動くのはHTMLとJavaScriptとCSSでしかありません。
Vue.jsで書いたソースをコンパイルして配信する静的コンテンツを生成します。
言語から他言語へのコンパイルなので、トランスパイルと言います。
それではVue.jsの開発環境であるVue CLIをnode.jsで導入します。
node.jsはサーバサイドJavaScript環境です。
Cloud9にも入っています。さすが。
バージョンを見てみましょう。
デフォルトのパッケージマネージャのnpm
も見ます。
$ node -v v10.17.0 $ npm -v 6.11.3
ちょっと古いですね。
最新化します。
$ nvm install v13.3.0 $ nvm alias default v13.3.0 $ node -v v13.3.0 $ npm update -g npm $ npm -v 6.13.4
npm
より速いパッケージマネージャのyarn
をインストールします。
npm
もだいぶ早くなったようですが、いまだyarn
の方が早いようです。
$ npm install -g yarn $ yarn -v 1.21.1
2年前はyarn init
でプロジェクトを作ったのですが、最新ではvue
コマンドが便利になっているようです。
そちらでやってみます。
Vue.js開発環境であるVue CLIをインストール。
$ yarn global add @vue/cli $ vue -V bash: vue: command not found
はい、パスが通っていないので.bashrc
でPATH
にyarn global bin
の結果を追加します。
PATH
に直接yarn global bin
と書くとターミナルを開きなおしたときにyarn
が認識されないっぽいので結果を書きました。
export PATH="$PATH:$HOME/.rvm/bin:/home/ec2-user/.yarn/bin"
Window→New Terminalでターミナルを開きなおしてみます。
$ vue -V @vue/cli 4.1.1
うん、パスが認識できています。
それでは、Vue.jsプロジェクトを作成します。
$ vue create clientside
設定値はこんな感じかなー。
使わないかもしれないのは入れない方がいいかなー。
2年前はいちいち1個ずつ入れてた気がします。
- preset:Manually select features
- features:Babel, Router, Vuex, CSS pre-processors, Linter / Formatter, Unit Testing, E2E Testing
- history mode:Yes
- CSS pre-processors:Stylus
- linter / formatter:Prettier
- additional lint features:Lint on save
- unit testing:Jest
- E2E testing:Nightwatch
- browsers:Chrome
- config :In package.json
- Save:N
「こんなやり方を続けていたら、あなたのほうがまいってしまうよ。」
インストールが終わりました。
1 error found.
E2E Testing系のjsでエラーですね。
console.log()
が認識されないことってある?
まあいいか。E2Eやるときに考えましょう。
Vue CLIのサーバを起動します。
yarn serve
画面を確認してみます。
http://localhost:8080/
とか表示されますが、Cloud9なので当然アクセスできません。
「Preview」メニューから「Preview Running Application」で起動します。
はいー、セキュリティ制限に引っ掛かりました。
「Invalid Host header」です。
プロジェクトフォルダ直下にvue.config.js
を作成します。
module.exports = { devServer: { disableHostCheck: true } }
もっかい起動&プレビュー。
表示できました。
「何もかも一人で片づけるには、荷が重すぎるのではないかな。」
ちなみにプロジェクトフォルダ直下に作成されているsrc/App.vue
の一部(Home
とAbout
の部分)をいじると、
ホットデプロイが走って、プレビューをリロードすると変更が反映されてます。
よしよし。
ん、App.vue
でシンタックスエラーが出てますね。
.vue
ファイルの<style>
タグ内のStylus記述を理解できていないようです。
エディタ右下のHTML
を「Stylus」に変更します。
他の.vue
ファイルもエラーが出てるファイルも「Stylus」に変えて、
あと、エラーが出てるやつは…
む。src/router/index.js
でパースエラーです。
Unexpected token import
と出ています。
「こんなところでimport
すんじゃねぇ、このすっとこどっこい!」と怒られています。
Vue CLIを起動するときは怒られないので、Cloud9の設定はESLintと少し違うようです。
力技ですが、「Preference」の「Hint & Warning」で「Ignore Message Matching」の欄にUnexpected token import
を入れて警告を消しました。
Cloud9はJavaScriptをサポートしているのですが、Vue.jsは管轄外らしく、警告の消し方を調べるのに時間が掛かりました。
4章のはじめからこれではこの先思いやられますが、あせらず地道にやっていきましょう。