nacos/console-ui/build/webpack.base.conf.js
onewe af90533c8e
[ISSUE #8156] Add hash-tag for js and css (#8157)
* [ISSUE #8156] Add hash-tag for js and css

- add index.html to copyList
- use index.ejs instead of index.html
- webpack enable hash

Close #8156

* [ISSUE #8156] Fix context-path error in development environment

Close #8156
2022-04-20 10:20:26 +08:00

114 lines
2.8 KiB
Java

/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed 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 path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const isDev = process.env.NODE_ENV !== 'production';
function resolve(dir) {
return path.join(__dirname, '..', dir);
}
module.exports = {
entry: {
main: './src/index.js',
},
output: {
filename: './js/[name].js',
path: path.resolve(__dirname, '../dist'),
},
resolve: {
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'],
alias: {
'@': resolve('src'),
utils: resolve('src/utils'),
components: resolve('src/components'),
},
},
externals: {
jquery: 'jQuery'
},
node: {
fs: 'empty'
},
module: {
rules: [
{
test: /\.(css|scss)$/,
use: [isDev ? 'style-loader' : MiniCssExtractPlugin.loader, {
loader: 'css-loader',
options:{
url: (url) => {
return isDev || !url.includes("console-ui");
}
}
}, 'sass-loader'],
},
{
test: /\.(js|jsx)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src')],
},
{
test: /\.(js|jsx|ts|tsx)$/,
include: [resolve('src')],
use: ['babel-loader'],
},
{
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
loader: 'url-loader',
options: {
limit: 10000,
name: '/img/[name].[hash:8].[ext]',
},
},
{
test: /\.(ttf|woff|svg)$/,
use: [
{
loader: 'url-loader',
options: {
name: '/fonts/[name].[hash:8].[ext]',
},
},
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
template: './public/index.ejs',
templateParameters: {
contextPath: isDev ? './' : 'console-ui/public/'
},
hash: true,
minify: !isDev,
}),
new CopyWebpackPlugin([
{
from: resolve('../console/src/main/resources/static/console-ui/public'),
to: './',
ignore: ['index.html'],
},
]),
],
};