Laravel5.5でVue.jsを使うまで
Laravel5.5 で Vue.js を使う
Laravel には Vue.js が標準で入っていると聞いていたので使ってみたいなーと思ってました。デフォルトで入ってると言っても、使うまでにちょびっと準備が必要ですので、その手順をメモします。
ちなみに、本家はこちら。
JavaScriptとCSSスカフォールド 5.5 Laravel
環境
- Laravel5.5 (Vue.js 2.1)
- CentOS 6.9
JS の依存解決はNPMを使っている
PHP の依存解決はご存知の通り composer ですが、JS の依存解決は npm を使っているらしい。
開発時点の元としてほとんどのアプリケーションで役立つだろうBootstrapとVueを提供しています。これらのフロントエンドパッケージをインストールするため、LaravelはNPMを使用しています。
composer で言うところの composer.json は、プロジェクトルートに package.json というのがあって、
JavaScriptアプリケーションを構築開始するために役立つよう、vueやaxiosのようなパッケージがデフォルトでLaravelのpackage.jsonファイルに含まれています。自身のアプリケーションの要求に合わせ、package.jsonファイルへ自由に追加、削除してください。
とのこと。
んで、Laravel5.5 のプロジェクト作った時点で Vue.js はすでにpackage.json に含まれていますので、プロジェクトルートで
$ npm install
を叩いてあげればいいんですけど、もちろん npm が入ってないと動きません。
なので、先に npm を入れます。
npm を入れる
そもそも、npm とは Node.js のパッケージを管理するツールのこと。
参考 便利なパッケージ管理ツール!npmとは【初心者向け】 | TechAcademyマガジン
CentOS6.9 に yum で入れます。
参考 node.jsをyumでインストールする(centos6.5) - Qiita
リポジトリは epel を使うとするところが多かったんですが、epel を使って入れると
$ node --version v0.10.48 $ npm --version 1.3.6
「なんかバージョンがいやに低い……??(´・ω・`)」となって、とりあえず $ npm install 叩いてみてたら、見事にエラー出まくりで2時間くらいハマりました。
んで、多分これはそもそも npm のバージョンが低いな?と思って、nodejs と npm の入れ方を変えました。
参考 CentOSに新しめのnodeをインストールする | ハックノート
$ curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
で、epel が入ってて途中でトランザクションのコンフリクトが起きたので、そうならないために、
$ pwd /etc/yum.repos.d
こいつの中にいる、epel リポジトリを使わないように
enabled=0
リポジトリ設定ファイル中のenable をすべて 0 にして、
# yum install nodejs npm
したら、新しめのがインストール出来たようです。
$ node --version v10.2.1 $ npm --version 5.6.0
npm を使って vue.js を入れる
んで、いざ。
プロジェクトルートで、以下を叩きます。
$ npm install . . . ⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly ⚠ pngquant pre-build test failed ℹ compiling from source ✔ pngquant pre-build test passed successfully ✖ Error: pngquant failed to build, make sure that libpng-dev is installed at Promise.all.then.arr (/home/vagrant/common/project-name/node_modules/pngquant-bin/node_modules/bin-build/node_modules/execa/index.js:231:11) at process._tickCallback (internal/process/next_tick.js:68:7) npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! pngquant-bin@4.0.0 postinstall: `node lib/install.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the pngquant-bin@4.0.0 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/vagrant/.npm/_logs/2018-05-26T09_14_31_922Z-debug.log
あるぇ、またエラってる\(^o^)/
✖ Error: pngquant failed to build, make sure that libpng-dev is installed
とりあえずなんか足りないみたいなので、入れてあげる。
# yum install libpng-devel
これ入れてから再度チャレンジ。
$ npm install npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5 > pngquant-bin@4.0.0 postinstall /home/vagrant/common/project-name/node_modules/pngquant-bin > node lib/install.js ⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly ⚠ pngquant pre-build test failed ℹ compiling from source ✔ pngquant pre-build test passed successfully ✔ pngquant built successfully npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@1.2.0 (node_modules/fsevents/node_modules/rc/node_modules/minimist): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, open '/home/vagrant/common/project-name/node_modules/fsevents/node_modules/rc/node_modules/minimist/package.json.3224473585' added 120 packages in 64.377s
WARN は出てるけど、とりあえず行ったっぽい。
あともう一息。
$ npm dev run . . . 95% emitting DONE Compiled successfully in 14075ms 09:22:57 . .
おお、なんとか終わったっぽい。
$ cd /home/vagrant/common/project-name/node_modules $ ls . . vue . .
ファイルがいっぱい出来てます。こっちにも。
$ cd /home/vagrant/common/project-name/public/js $ ls app.js
ふむ。
使い方はよくわかりませんが、それはこれから勉強していくということで。
これで一応、vue.js を使う準備が出来た、のかな…。多分。
参考
Laravel5.5でVue.jsを使ってみた - あ、しんのきです