webpack

webpack

webpack.config.js

const path = require('path')
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
const webpack = require('webpack')
const TerserPlugin = require('terser-webpack-plugin')
const BundleAnalyZerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin

module.exports = {
	entry: 'app.js', //工程资源的入口
	output: {
		path: path.join(__dirname, 'dist'), //绝对路径
		filename: 'bundle.js'
	},
	devServer: {
		port: 3000, //服务端口
		publicPath: 'dist',
		// HMR热缓存
		hot: ture
	},
	// 压缩配置
	optimization: {
		minimizer: [new TerserPlugin({
			// 加快构建速度
			cache: true,
			terserOptions: {
				compress: {
					unused: true,
					drop_debugger: true,
					drop_console: true,
					dead_code: true
				}
			}
		})]
	},
	// 文件加载器-loader
	module: {
		rules: [
			{
				test:/\.css$/,
				use: [
					'style-looder',
					'css-loader'
				]
			}
		]
	},
	pligins: [
		new UglifyJSPlugin(),
		// HMR
		new webpack.HotModuleReplacementPlugin()
		// 构建结果图示
		new BundleAnalyZerPlugin()
	],
	module.exports = {
		module: {
			rules: [
				{
					test: /\.jsx?/,
					exclude: /node_modules/,
					use: {
						loader: 'babel-loader',
						options: {
							babelrc: false,
							presets: {
								require.resolve('@babel/preset-react'),
								[require.resolve('@babel/preset-env', {modules:false})],
								cacheDirectory: true
							}
						}
					}
				}
			]
		}
	}
}

配置babel

在package.json里

"babel": {
	"presets": ["@babel/preset-env"]	//ES6转换成ES5
}

在.babelrc里(优先级最高)

{
	"preset": ["@babel/preset-env"]
}

webpack打包优化 *

压缩

减少查找

减少解析

多线程并行打包:HappyPack、threa-loader(把load放在线程池了,必须放在所有loader之前)

fast-sass-loader

tree-shaking:消除无用代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值