You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
93 lines
2.3 KiB
const path = require("path")
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin")
|
|
const ProgressBarPlugin = require("progress-bar-webpack-plugin")
|
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin")
|
|
|
|
const isDevelopment = process.env.NODE_ENV === "development"
|
|
|
|
// 清理缓存,避免本地缓存越来越大
|
|
if (isDevelopment) {
|
|
const cachePath = path.resolve(__dirname,"../node_modules/.cache")
|
|
new CleanWebpackPlugin().removeFiles([cachePath])
|
|
}
|
|
|
|
const outputPath = (function () {
|
|
return path.resolve(__dirname, "../dist")
|
|
})()
|
|
|
|
let commonConfig = {
|
|
target: ["web", "es5"],
|
|
entry: {
|
|
index: path.resolve(__dirname, "../src/index.jsx")
|
|
},
|
|
output: {
|
|
filename: "static/js/[name]_[chunkhash:4].js",
|
|
path: outputPath,
|
|
clean: true,
|
|
},
|
|
cache: {
|
|
type: "filesystem",
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "../src"),
|
|
},
|
|
extensions: [".jsx", ".js", ".json"],
|
|
symlinks: false,
|
|
},
|
|
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.jsx?$/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
},
|
|
include: [path.resolve(__dirname, "../src")],
|
|
exclude: /node_modules/,
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
include: [
|
|
path.resolve(__dirname, "../src"),
|
|
path.resolve(__dirname, "../node_modules/leaflet"),
|
|
],
|
|
use: ["style-loader", "css-loader", "postcss-loader"],
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
include: [path.resolve(__dirname, "../src")],
|
|
use: ["style-loader", "css-loader", "postcss-loader", "sass-loader"],
|
|
},
|
|
{
|
|
test: /\.(png|jpe?g|gif|bmp|svg)$/,
|
|
include: [
|
|
path.resolve(__dirname, "../src"),
|
|
path.resolve(__dirname, "../node_modules/leaflet"),
|
|
],
|
|
type: "asset",
|
|
generator: {
|
|
filename: "static/images/[name]_[hash].[ext]",
|
|
},
|
|
},
|
|
{
|
|
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
|
include: [path.resolve(__dirname, "../src")],
|
|
type: "asset",
|
|
generator: {
|
|
filename: "static/fonts/[name]_[hash].[ext]",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new HtmlWebpackPlugin({
|
|
template: path.resolve(__dirname, "../public/index.html"),
|
|
chunks: ["index"],
|
|
baseApi: isDevelopment ? "/PMS" : "/PMS",
|
|
}),
|
|
new ProgressBarPlugin(),
|
|
],
|
|
}
|
|
|
|
module.exports = commonConfig
|