igo
Version:
Igo is a Node.js Web Framework based on Express
76 lines (72 loc) • 1.75 kB
JavaScript
// plugins
const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin;
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const AssetsWebpackPlugin = require('assets-webpack-plugin');
// Webpack config
module.exports = {
entry: {
main: './js/main.js',
vendor: './js/vendor.js'
},
output: {
filename: '[name]-[fullhash].js',
path: process.cwd() + '/public/dist',
publicPath: '/dist/',
},
stats: {
colors: true
},
module: {
rules: [{
test: /\.scss$/,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader'
]
}, {
test: /\.less$/,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'less-loader'
]
}, {
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react']
}
}
}, {
test: /\.(png|gif|jpg|jpeg|woff|woff2|eot|ttf|svg|otf)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'url-loader',
options: {
limit: 8192,
}
}]
}]
},
plugins: [
// clean dist folder before building
new CleanWebpackPlugin({
cleanStaleWebpackAssets: false,
cleanOnceBeforeBuildPatterns: ['**/*'],
cleanAfterEveryBuildPatterns: ['*.js','*.css'],
}),
// extract css
new MiniCssExtractPlugin({
filename: '[name]-[fullhash].css',
chunkFilename: '[id]-[fullhash].css'
}),
// save stats
new AssetsWebpackPlugin({
filename: 'public/webpack-assets.json'
})
]
};