关注了 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 方便各使用者互相讨论,学习。