溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Laravel中自定義webpack.mix.js

發布時間:2021-04-01 18:08:25 來源:億速云 閱讀:478 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關怎么在Laravel中自定義webpack.mix.js,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Laravel自定義webpack.mix.js

我們在使用laravel構建項目時,經常會把后臺管理前臺放在同一個laravel項目中。

但是當這兩個項目都需要用到laravel-mix構建時,我們希望通過運行不同的npm命令區分后臺及前臺。

考慮混合在一起的情況:

//webpack.mix.js

const { mix } = require('laravel-mix');

    //前臺資源打包到 /public/js/index.js
mix.js('resources/assets/js/app.js', 'js/index.js')
    //后臺資源打包到 /public/js/admin/index.js
   .js('resources/assets/js/admin/index.js', 'js/admin/');

webpack.mix.js中,我們把后臺和前臺資源文件寫在同一個配置文件中,這樣你只需運行npm run dev,資源文件就能自動打包了。

但是當只你想更新前臺資源文件時,后臺資源文件不得不一起被動更新。

解決方案

在根目錄定義兩個配置文件

  1. webpack.mix.js //默認已存在

  2. webpack.admin.js

更新webpack.mix.js使其支持env。

//webpack.mix.js
const { mix } = require('laravel-mix');
const { env } = require('minimist')(process.argv.slice(2));

if (env && env.admin) {
    require(`${__dirname}\\webpack.admin.js`);
    return;
}

mix.js('resources/assets/js/app.js', 'js/index.js');
//其他前端資源

后端資源打包webpack.admin.js配置

//webpack.admin.js
const { mix } = require('laravel-mix');

mix.js('resources/assets/js/admin/index.js', 'js/admin/');
//其他后臺資源配置

確認已安裝完node依賴,并在根目錄執行

npm run dev -- --env.admin //打包后端資源
npm run dev                //默認打包前端資源

若嫌每次都帶參數太麻煩,可更新package.json文件,帶上env參數(最后面)

"scripts": {
    "dev-admin": "node node_modules/cross-env/dist/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 --env.admin"
}

接下來直接運行npm run dev-admin就能打包后端資源。

注意,

webpack.mix.jswebpack.admin.js沒有指定不同的mix.setPublicPath(path)時,默認的打包文件都會放到/public目錄下,這樣每次打包都會覆蓋mix-manifest.json的值。

最好的方法時前臺及后臺指定不同的目錄,

server {
    server_name admin.domain.com;
    index index.php;
    root /data/your/site/public-admin;
    # ....
}

server {
    server_name domain.com;
    root /data/your/site/public;
    index index.php;
    # ....
}

這樣你只需要在webpack.admin.js指定publicPath就能避免mix-manifest.json被覆蓋的問題。

//webpack.admin.js
mix.setPublicPath('public-admin');
//...


上述就是小編為大家分享的怎么在Laravel中自定義webpack.mix.js了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女