47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
const path = require('path');
|
|
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
|
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
const csso = require('csso');
|
|
const fs = require('fs');
|
|
const cssDist = path.resolve(__dirname, 'css/dist');
|
|
const cssTransform = (content, filename) => {
|
|
const basename = path.basename(filename);
|
|
const result = csso.minify(content.toString(), {
|
|
filename: basename,
|
|
sourceMap: true
|
|
});
|
|
fs.writeFile(`css/dist/${basename}.map`, result.map.toString(), (err) => { if (err) { throw err; }});
|
|
return `${result.css}\n/*# sourceMappingURL=${basename}.map */`;
|
|
}
|
|
|
|
module.exports = {
|
|
entry: './js/src/ulogger.js',
|
|
output: {
|
|
filename: 'bundle.js',
|
|
path: path.resolve(__dirname, 'js/dist'),
|
|
publicPath: 'js/dist/'
|
|
},
|
|
plugins: [
|
|
new CleanWebpackPlugin({
|
|
cleanOnceBeforeBuildPatterns: [ '**/*', '!.*' ]
|
|
}),
|
|
new CopyWebpackPlugin({
|
|
patterns: [
|
|
{ from: 'css/src/*.css', to: `${cssDist}/[name][ext]`, transform: cssTransform },
|
|
{ from: 'node_modules/ol/ol.css', to: `${cssDist}/[name][ext]`, transform: cssTransform },
|
|
{ from: 'node_modules/chartist/dist/chartist.css', to: `${cssDist}/[name][ext]`, transform: cssTransform }
|
|
]
|
|
})
|
|
],
|
|
optimization: {
|
|
splitChunks: {
|
|
cacheGroups: {
|
|
vendors: {
|
|
test: /[\\/]node_modules[\\/]|[\\/]ol.js/,
|
|
name: 'ol'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|