PJ Blog 升级到 Laravel 5.4

关注了 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

为了继续去使用 thinkerartisan 命令行,你需要安装 laravel/tinker 包:

composer require laravel/tinker

当包安装后,你应该在 config/app.php 配置文件中添加 Laravel\Tinker\TinkerServiceProvider::classproviders 数组中。

第三步: 添加新的全局中间件

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.3package.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.4package.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 协议》,转载必须注明作者和本文链接
Nothing is impossible. —— @Jiajian Chan
本帖由 Summer 于 7年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 11
lijinma

行动很迅速~

7年前 评论
Summer

好一篇实战升级的文章

7年前 评论
DukeAnn

为什么我的直接改成5.4 composer updata 会提示依赖版本不够什么的

7年前 评论

厉害了这升级速度~

7年前 评论

@ADKi 我的也是,请问你的解决了吗 .
你的提示的是这个错误吗? 问答:升级 5.4 Composer update 报错了.

7年前 评论

@ADKi
@cmzz 我没有出现此问题,你们可以尝试删除 composer.lock 后重新安装一下。或者 composer update

7年前 评论

@cjjian 试过了, 甚至复制了5.4版本的 vendor composer.json 覆盖,然后依然报错 .. 奇怪的问题

7年前 评论

@cmzz 看报错是缺少了那个包,你看看 vendor 里面有没有那个包,不知道你是怎么样的试过。

7年前 评论

package.json 似乎还缺 "webpack": "^2.2.0","webpack-dev-server": "^2.3.0" 两项。

7年前 评论

@chenm 这些依赖包已集成到 laravel-mix ,so 无需自己再引入

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!