From 24924cebd6a134bc5bb25e01fb962869d545f671 Mon Sep 17 00:00:00 2001 From: Gabriel Rafael Date: Tue, 1 Oct 2019 20:15:57 -0300 Subject: [PATCH 1/5] Add laravel-mix-merge-manifest dependency --- package-lock.json | 50 ++++++++++++++++++++++++++++++++++++----------- package.json | 1 + 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 110dfa6..f370615 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3505,7 +3505,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3526,12 +3527,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3546,17 +3549,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3673,7 +3679,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3685,6 +3692,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3699,6 +3707,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3706,12 +3715,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -3730,6 +3741,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3810,7 +3822,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3822,6 +3835,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3907,7 +3921,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3943,6 +3958,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3962,6 +3978,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4005,12 +4022,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -5273,6 +5292,15 @@ "yargs": "^8.0.2" } }, + "laravel-mix-merge-manifest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/laravel-mix-merge-manifest/-/laravel-mix-merge-manifest-0.1.2.tgz", + "integrity": "sha512-U6FnfIkxMiOA/49JXSxv8OoW5SjHFTVkJCDq66gL0qt639nwy5aJBsttCyhuAa64xgd3oswGM5o3gpgBF00isQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", diff --git a/package.json b/package.json index 4b543f2..06fa0f0 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "cross-env": "^5.0.4", "jquery": "^3", "laravel-mix": "^2.1.14", + "laravel-mix-merge-manifest": "^0.1.2", "less": "^3.8.1", "less-loader": "^4.0.5" } From 6d4fb584a35e612949710b9eba6f911aa4d941dc Mon Sep 17 00:00:00 2001 From: Gabriel Rafael Date: Tue, 1 Oct 2019 20:16:28 -0300 Subject: [PATCH 2/5] Change scripts to use an unique manifest --- webpack.mix.admin.js | 5 ++--- webpack.mix.js | 7 ++++++- webpack.mix.website.js | 5 ++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/webpack.mix.admin.js b/webpack.mix.admin.js index b0300e7..6cc0a15 100644 --- a/webpack.mix.admin.js +++ b/webpack.mix.admin.js @@ -1,10 +1,9 @@ let mix = require('laravel-mix'); mix - .setPublicPath(path.normalize('public_html/assets/admin')) .options({ processCssUrls: false }) - .js('resources/assets/admin/js/admin.js', 'js/global.js') - .less('resources/assets/admin/less/admin.less', 'css/style.css') + .js('resources/assets/admin/js/admin.js', 'admin/js/index.js') + .less('resources/assets/admin/less/admin.less', 'admin/css/style.css') ; \ No newline at end of file diff --git a/webpack.mix.js b/webpack.mix.js index 982041a..c0df6cb 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -1,5 +1,10 @@ let mix = require('laravel-mix'); +require('laravel-mix-merge-manifest'); + +mix.setPublicPath(path.normalize('public_html/assets')) if (process.env.section) { require(`${__dirname}/webpack.mix.${process.env.section}.js`); -} \ No newline at end of file +} + +mix.mergeManifest(); diff --git a/webpack.mix.website.js b/webpack.mix.website.js index 8ad9bfa..dcb7210 100644 --- a/webpack.mix.website.js +++ b/webpack.mix.website.js @@ -1,10 +1,9 @@ let { mix } = require('laravel-mix'); mix - .setPublicPath(path.normalize('public_html/assets/website')) - .less('resources/assets/website/less/website.less', 'css/style.css') + .less('resources/assets/website/less/website.less', 'website/css/style.css') .options({ processCssUrls: false }) - .js('resources/assets/website/js/website.js', 'js/global.js') + .js('resources/assets/website/js/website.js', 'website/js/all.js') ; \ No newline at end of file From ee432aee0b4229597db8f87991d589cc708cb55a Mon Sep 17 00:00:00 2001 From: Gabriel Rafael Date: Tue, 1 Oct 2019 21:41:58 -0300 Subject: [PATCH 3/5] Removes setPublicPath from main file --- webpack.mix.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/webpack.mix.js b/webpack.mix.js index c0df6cb..c5be0e9 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -1,10 +1,12 @@ let mix = require('laravel-mix'); require('laravel-mix-merge-manifest'); -mix.setPublicPath(path.normalize('public_html/assets')) if (process.env.section) { require(`${__dirname}/webpack.mix.${process.env.section}.js`); } -mix.mergeManifest(); +if (process.env.npm_config_unique_manifest) { + mix.mergeManifest(); +} + From c20b23c3b8c7b6cca76f2efe699c638c29e82aa7 Mon Sep 17 00:00:00 2001 From: Gabriel Rafael Date: Tue, 1 Oct 2019 21:42:38 -0300 Subject: [PATCH 4/5] Change public path based on unique manifest --- webpack.mix.admin.js | 14 +++++++++++--- webpack.mix.website.js | 13 +++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/webpack.mix.admin.js b/webpack.mix.admin.js index 6cc0a15..de2e304 100644 --- a/webpack.mix.admin.js +++ b/webpack.mix.admin.js @@ -1,9 +1,17 @@ let mix = require('laravel-mix'); +let path = ''; + +if (process.env.npm_config_unique_manifest) { + path = `${process.env.section}/`; + mix.setPublicPath('public_html/assets'); +} else { + mix.setPublicPath('public_html/assets/admin'); +} + mix .options({ processCssUrls: false }) - .js('resources/assets/admin/js/admin.js', 'admin/js/index.js') - .less('resources/assets/admin/less/admin.less', 'admin/css/style.css') -; \ No newline at end of file + .js('resources/assets/admin/js/admin.js', `${path}js/global.js`) + .less('resources/assets/admin/less/admin.less', `${path}css/style.css`); \ No newline at end of file diff --git a/webpack.mix.website.js b/webpack.mix.website.js index dcb7210..e1dc7c6 100644 --- a/webpack.mix.website.js +++ b/webpack.mix.website.js @@ -1,9 +1,18 @@ let { mix } = require('laravel-mix'); +let path = ''; + +if (process.env.npm_config_unique_manifest) { + path = `${process.env.section}/`; + mix.setPublicPath('public_html/assets'); +} else { + mix.setPublicPath('public_html/assets/website'); +} + mix - .less('resources/assets/website/less/website.less', 'website/css/style.css') .options({ processCssUrls: false }) - .js('resources/assets/website/js/website.js', 'website/js/all.js') + .less('resources/assets/website/less/website.less', `${path}css/style.css`) + .js('resources/assets/website/js/website.js', `${path}js/global.js`); ; \ No newline at end of file From 41c9b0071b998ef1ea7a2b2eb9d1e8c8e843e86e Mon Sep 17 00:00:00 2001 From: Gabriel Rafael Date: Tue, 1 Oct 2019 21:46:00 -0300 Subject: [PATCH 5/5] Update Readme with --unique-manifest flag --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 182998a..eff1f16 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,6 @@ This is an example of a [__Laravel Mix__](https://github.com/JeffreyWay/laravel- 1. Run `npm install` to set up the dependencies. 2. Modify `webpack.mix.admin.js` or `webpack.mix.website.js` if you want to change sources and destinations, or to play around with the build process of course. 3. Run one of the build scripts and check out the output (for example `npm run dev`) +4. If you need to share resources between `mix-manifest.json` use the `--unique-manifest` flag (for example `npm run dev -- --unique-manifest`). I put this together after reading through many excellent replies to various Laravel Mix issues. Feel free to fork this repo and add to it. \ No newline at end of file