關注了 5.4
也有一小段時間,終於在今天凌晨的時候發佈了。固然我也將個人開源博客( PJ Blog )第一時間升級到 Laravel 5.4
,併發布 jcc/blog 1.1 版本。javascript
Laravel 5.4
也加入了不少的新特性,更多請看:https://laravel-china.org/topics/3713。php
此項目由 Laravel 5.3
升級到 Laravel 5.4
也是很是的簡單,前端編譯也用全新的 laravel-mix
來替代了 gulp
。css
Laravel
Laravel 5.3
升級到 Laravel 5.4
官方文檔已經寫得很全面。前端
在 composer.json
文件,更新你的 laravel/framework
依賴的版本號到 5.4.*
。vue
爲了繼續去使用 thinker
的 artisan
命令行,你須要安裝 laravel/tinker
包:java
composer require laravel/tinker
當包安裝後,你應該在 config/app.php
配置文件中添加 Laravel\Tinker\TinkerServiceProvider::class
到 providers
數組中。node
Laravel 5.4
新增了三個中間件,可看看此文章 新增 3 個全局中間件jquery
中間件 | 功能 |
---|---|
ValidatePostSize | 驗證 post 數據大小 |
TrimStrings | 去除首尾空白字符 |
ConvertEmptyStringsToNull | 轉換空字符串爲 null |
在 App\Http\Middleware
下建立 TrimStrings
中間件:webpack
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as BaseTrimmer; class TrimStrings extends BaseTrimmer { /** * The names of the attributes that should not be trimmed. * * @var array */ protected $except = [ 'password', 'password_confirmation', ]; }
更新 App\Http\Kernel.php
文件:ios
protected $middleware = [ ... \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ];
Laravel Mix
替代 Laravel Elixir
Laravel 5.3
的 package.json
文件 :
{ "private": true, "scripts": { "prod": "gulp --production", "dev": "gulp watch" }, "devDependencies": { "bootstrap-sass": "^3.3.7", "gulp": "^3.9.1", "jquery": "^3.1.0", "laravel-elixir": "^6.0.0-9", "laravel-elixir-vue-2": "^0.2.0", "laravel-elixir-webpack-official": "^1.0.2", "lodash": "^4.16.2", "vue": "^2.0.1", "vue-resource": "^1.0.3" } }
更新到 Laravel 5.4
的 package.json
文件:
{ "private": true, "scripts": { "dev": "node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "hot": "node_modules/cross-env/bin/cross-env.js NODE_ENV=development webpack-dev-server --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "production": "node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" }, "devDependencies": { "axios": "^0.15.2", "bootstrap-sass": "^3.3.7", "jquery": "^3.1.0", "laravel-mix": "^0.5.0", "lodash": "^4.16.2", "vue": "^2.0.1" } }
官方默認使用了
axios
替換了vue-resource(Vue 官方已不在維護)
,使用也是很簡單的。
在根目錄下建立 webpack.mix.js
文件,並加入:
const { mix } = require('laravel-mix'); /* |-------------------------------------------------------------------------- | Mix Asset Management |-------------------------------------------------------------------------- | | Mix provides a clean, fluent API for defining some Webpack build steps | for your Laravel application. By default, we are compiling the Sass | file for the application as well as bundling up all the JS files. | */ mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css')
Laravel Mix
的用法可在 官網文檔 看到,用法跟Laravel Elixir
有所不同。
最後,將 gulpfile.js
刪除,從新安裝編譯便可。
最後的最後,我發現使用 PJ Blog 的人不少都出現部署等問題,其實這些問題解決也是很是簡單的,但因爲我沒有足夠的時間去逐一回答,因此我建立了一個 Q 羣:272734386 方便各使用者互相討論,學習。