laipower/wp-content/plugins/audioigniter/player/webpack.parts.js

87 lines
1.6 KiB
JavaScript

const webpack = require('webpack');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const autoprefixer = require('autoprefixer');
exports.setupSass = paths => ({
module: {
rules: [
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
include: paths,
},
],
},
});
exports.extractCSS = paths => ({
module: {
rules: [
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [
autoprefixer({
browsers: ['last 2 versions', '>1%'],
cascade: false,
}),
],
},
},
},
{
loader: 'sass-loader',
},
],
include: paths,
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
}),
],
});
exports.devServer = options => ({
devServer: {
static:{
directory: __dirname,
},
historyApiFallback: true,
hot: false,
host: options.host,
port: options.port,
},
});
exports.minify = () => ({
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: false,
}),
],
},
});
exports.setFreeVariable = (key, value) => {
const env = {};
env[key] = JSON.stringify(value);
return {
plugins: [new webpack.DefinePlugin(env)],
};
};