blob: 9673886668f9315cf664c2c32588a6b1824a2181 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');
module.exports = (env, argv) => {
const isProd = argv.mode === 'production';
return {
context: path.join(__dirname, '/src/main/resources/assets'),
mode: isProd ? 'production' : 'development',
devtool: isProd ? false : 'source-map',
entry: {
'js/index': './js/index.jsx',
'css/index': './styles/index.less',
},
output: {
path: path.join(__dirname, '/target/assets'),
},
resolve: {
extensions: ['.js', '.jsx', '.less', '.css'],
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
'file-loader',
],
},
{
test: /\.less$/,
use: [
{loader: MiniCssExtractPlugin.loader, options: {publicPath: '../'}},
{loader: 'css-loader', options: {sourceMap: !isProd, importLoaders: 1}},
{loader: 'postcss-loader', options: {sourceMap: !isProd}},
{loader: 'less-loader', options: {sourceMap: !isProd}},
]
},
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
chunkFilename: './css/[id].css'
}),
],
};
};