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 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" } diff --git a/webpack.mix.admin.js b/webpack.mix.admin.js index b0300e7..de2e304 100644 --- a/webpack.mix.admin.js +++ b/webpack.mix.admin.js @@ -1,10 +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 - .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') -; \ 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.js b/webpack.mix.js index 982041a..c5be0e9 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -1,5 +1,12 @@ let mix = require('laravel-mix'); +require('laravel-mix-merge-manifest'); + if (process.env.section) { require(`${__dirname}/webpack.mix.${process.env.section}.js`); -} \ No newline at end of file +} + +if (process.env.npm_config_unique_manifest) { + mix.mergeManifest(); +} + diff --git a/webpack.mix.website.js b/webpack.mix.website.js index 8ad9bfa..e1dc7c6 100644 --- a/webpack.mix.website.js +++ b/webpack.mix.website.js @@ -1,10 +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 - .setPublicPath(path.normalize('public_html/assets/website')) - .less('resources/assets/website/less/website.less', 'css/style.css') .options({ processCssUrls: false }) - .js('resources/assets/website/js/website.js', 'js/global.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