關注了 5.4
也有一小段時間,終於在今天凌晨的時候釋出了。當然我也將我的開源部落格( PJ Blog )第一時間升級到 Laravel 5.4
,併發布 jcc/blog 1.1 版本。
Laravel 5.4
也加入了很多的新特性,更多請看:公告:Laravel 5.4 正式釋出。
此專案由 Laravel 5.3
升級到 Laravel 5.4
也是非常的簡單,前端編譯也用全新的 laravel-mix
來替代了 gulp
。
升級 Laravel
Laravel 5.3
升級到 Laravel 5.4
官方文件已經寫得很全面。
第一步:更新框架版本
在 composer.json
檔案,更新你的 laravel/framework
依賴的版本號到 5.4.*
。
第二步:加入 Laravel Tinker
為了繼續去使用 thinker
的 artisan
命令列,你需要安裝 laravel/tinker
包:
composer require laravel/tinker
當包安裝後,你應該在 config/app.php
配置檔案中新增 Laravel\Tinker\TinkerServiceProvider::class
到 providers
陣列中。
第三步: 新增新的全域性中介軟體
Laravel 5.4
新增了三個中介軟體,可看看此文章 新增 3 個全域性中介軟體
中介軟體 | 功能 |
---|---|
ValidatePostSize | 驗證 post 資料大小 |
TrimStrings | 去除首尾空白字元 |
ConvertEmptyStringsToNull | 轉換空字串為 null |
在 App\Http\Middleware
下建立 TrimStrings
中介軟體:
<?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
檔案:
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 方便各使用者互相討論,學習。
本作品採用《CC 協議》,轉載必須註明作者和本文連結