const mix = require('laravel-mix'); require('dotenv').config(); /* |-------------------------------------------------------------------------- | 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. | */ const glob = require('glob') let theme = null; let distPath = mix.inProduction() ? 'resources/dist' : 'resources/pre-dist'; function mixAssetsDir(query, cb) { (glob.sync('resources/assets/' + query) || []).forEach(f => { f = f.replace(/[\\\/]+/g, '/'); cb(f, f.replace('resources/assets', distPath)); }); } function themeCss(path) { let sf = theme ? '-'+theme : ''; return `${distPath}/${path}${sf}.css` } function dcatPath(path) { return 'resources/assets/dcat/' + path; } function dcatDistPath(path) { return distPath + '/dcat/' + path; } /* |-------------------------------------------------------------------------- | Dcat Admin assets |-------------------------------------------------------------------------- */ mix.copyDirectory('resources/assets/images', distPath + '/images'); mix.copyDirectory('resources/assets/fonts', distPath + '/fonts'); // AdminLTE3.0 mix.sass('resources/assets/adminlte/scss/AdminLTE.scss', themeCss('adminlte/adminlte')).sourceMaps(); mix.js('resources/assets/adminlte/js/AdminLTE.js', distPath + '/adminlte/adminlte.js').sourceMaps(); // 复制第三方插件文件夹 mix.copyDirectory(dcatPath('plugins'), dcatDistPath('plugins')); // 打包app.js mix.js(dcatPath('js/dcat-app.js'), dcatDistPath('js/dcat-app.js')).sourceMaps(); // 打包app.scss mix.sass(dcatPath('sass/dcat-app.scss'), themeCss('dcat/css/dcat-app')).sourceMaps(); mix.copy(dcatPath('sass/nunito.css'), `${distPath}/dcat/css/nunito.css`); // 打包所有 extra 里面的所有js和css mixAssetsDir('dcat/extra/*.js', (src, dest) => mix.js(src, dest)); mixAssetsDir('dcat/extra/*.scss', (src, dest) => mix.sass(src, dest.replace('scss', 'css')));