68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
| const path = require('path');
 | |
| const webpack = require('webpack');
 | |
| const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 | |
| const HtmlWebpackPlugin = require('html-webpack-plugin');
 | |
| const merge = require('webpack-merge');
 | |
| const baseWebpackConfig = require('./webpack.base.config');
 | |
| 
 | |
| module.exports = merge(baseWebpackConfig, {
 | |
|   output: {
 | |
|     path: path.resolve(__dirname, './_site'),
 | |
|     publicPath: '/',
 | |
|     filename: '[name].[contenthash:8].js',
 | |
|     chunkFilename: '[contenthash:8].async.js',
 | |
|   },
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.less$/,
 | |
|         use: [
 | |
|           MiniCssExtractPlugin.loader,
 | |
|           'css-loader',
 | |
|           'postcss-loader',
 | |
|           { loader: 'less-loader', options: { javascriptEnabled: true } },
 | |
|         ],
 | |
|       },
 | |
|       {
 | |
|         test: /\.css$/,
 | |
|         use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'],
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
|   optimization: {
 | |
|     splitChunks: {
 | |
|       cacheGroups: {
 | |
|         vendors: {
 | |
|           name: `chunk-vendors`,
 | |
|           test: /[\\/]node_modules[\\/]/,
 | |
|           priority: -10,
 | |
|           chunks: 'initial',
 | |
|         },
 | |
|         common: {
 | |
|           name: `chunk-common`,
 | |
|           minChunks: 2,
 | |
|           priority: -20,
 | |
|           chunks: 'initial',
 | |
|           reuseExistingChunk: true,
 | |
|         },
 | |
|       },
 | |
|     },
 | |
|   },
 | |
|   plugins: [
 | |
|     new webpack.DefinePlugin({
 | |
|       'process.env': {
 | |
|         NODE_ENV: '"production"',
 | |
|       },
 | |
|     }),
 | |
|     new HtmlWebpackPlugin({
 | |
|       template: './site/index.html',
 | |
|       inject: true,
 | |
|       production: true,
 | |
|     }),
 | |
|     new MiniCssExtractPlugin({
 | |
|       filename: '[name].[contenthash:8].css',
 | |
|       chunkFilename: '[id].[contenthash:8].css',
 | |
|     }),
 | |
|   ],
 | |
| });
 |