webpack.mix.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const mix = require('laravel-mix');
  2. const exec = require('child_process').exec;
  3. require('dotenv').config();
  4. /*
  5. |--------------------------------------------------------------------------
  6. | Mix Asset Management
  7. |--------------------------------------------------------------------------
  8. |
  9. | Mix provides a clean, fluent API for defining some Webpack build steps
  10. | for your Laravel application. By default, we are compiling the Sass
  11. | file for the application as well as bundling up all the JS files.
  12. |
  13. */
  14. const glob = require('glob')
  15. const path = require('path')
  16. /*
  17. |--------------------------------------------------------------------------
  18. | Vendor assets
  19. |--------------------------------------------------------------------------
  20. */
  21. function mixAssetsDir(query, cb) {
  22. (glob.sync('resources/assets/' + query) || []).forEach(f => {
  23. f = f.replace(/[\\\/]+/g, '/');
  24. cb(f, f.replace('resources/assets', 'resources/dist'));
  25. });
  26. }
  27. const sassOptions = {
  28. precision: 5
  29. };
  30. // plugins Core stylesheets
  31. mixAssetsDir('sass/plugins/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions));
  32. // themes Core stylesheets
  33. mixAssetsDir('sass/themes/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions));
  34. // pages Core stylesheets
  35. mixAssetsDir('sass/pages/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions));
  36. // Core stylesheets
  37. mixAssetsDir('sass/core/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions));
  38. // script js
  39. mixAssetsDir('js/scripts/**/*.js', (src, dest) => mix.scripts(src, dest));
  40. /*
  41. |--------------------------------------------------------------------------
  42. | Application assets
  43. |--------------------------------------------------------------------------
  44. */
  45. mixAssetsDir('assets/vendors/js/**/*.js', (src, dest) => mix.scripts(src, dest));
  46. mixAssetsDir('assets/vendors/css/**/*.css', (src, dest) => mix.copy(src, dest));
  47. mixAssetsDir('assets/vendors/css/editors/quill/fonts/', (src, dest) => mix.copy(src, dest));
  48. mix.copyDirectory('resources/assets/images', 'resources/dist/images');
  49. mix.copyDirectory('resources/assets/fonts', 'resources/dist/fonts');
  50. mix.copyDirectory('resources/assets/vendors', 'resources/dist/vendors');
  51. function dcat_path(path) {
  52. return 'resources/assets/dcat/' + path;
  53. }
  54. // dcat-admin
  55. mix.copyDirectory('resources/assets/plugins', 'resources/dist/plugins');
  56. mix.js(dcat_path('js/dcat-app.js'), 'resources/dist/dcat/js/app.js')
  57. .js(dcat_path('extra/resource-selector.js'), 'resources/dist/dcat/extra/resource-selector.js')
  58. .sass(dcat_path('sass/dcat-app.scss'), 'resources/dist/dcat/css/app.css');
  59. mix.js('resources/assets/js/core/app-menu.js', 'resources/dist/js/core')
  60. .js('resources/assets/js/core/app.js', 'resources/dist/js/core')
  61. .sass('resources/assets/sass/bootstrap.scss', 'resources/dist/css')
  62. .sass('resources/assets/sass/bootstrap-extended.scss', 'resources/dist/css')
  63. .sass('resources/assets/sass/colors.scss', 'resources/dist/css')
  64. .sass('resources/assets/sass/components.scss', 'resources/dist/css')
  65. .sass('resources/assets/sass/custom-rtl.scss', 'resources/dist/css')
  66. .sass('resources/assets/sass/custom-laravel.scss', 'resources/dist/css');
  67. mix.then(() => {
  68. if (process.env.MIX_CONTENT_DIRECTION === "rtl") {
  69. let command = `node ${path.resolve('node_modules/rtlcss/bin/rtlcss.js')} -d -e ".css" ./resources/dist/css/ ./resources/dist/css/`;
  70. exec(command, function (err, stdout, stderr) {
  71. if (err !== null) {
  72. console.log(err);
  73. }
  74. });
  75. // exec('./node_modules/rtlcss/bin/rtlcss.js -d -e ".css" ./resources/dist/css/ ./resources/dist/css/');
  76. }
  77. });
  78. // if (mix.inProduction()) {
  79. // mix.version();
  80. // mix.webpackConfig({
  81. // output: {
  82. // resources/distPath: '/demo/vuexy-bootstrap-laravel-admin-template/demo-1/'
  83. // }
  84. // });
  85. // mix.setResourceRoot("/demo/vuexy-bootstrap-laravel-admin-template/demo-1/");
  86. // }