1. 直接打包(在bash中)./node_modules/.bin/webpack

  2. 在config.json中 的"scripts"中添加build: "webpack",然后执行 run build

原理:模块局部安装会在node_modules/.bin目录创建软链接

Entry 用来指定 webpack 的打包入口

  1. 单入口

适合单页面

module.exports = {
	entry:'./path/to/my/entry/file.js'
};
  1. 多入口

适合多页面场景

module.exports = {
	entry:{
		app:'./src/app.js',
		adminApp:'./src/adminApp.js'
	}
};

Output 用来告诉webpack如何将编译后的文件输出到磁盘

  1. 单入口配置:
module.exports = {
	entry:'./path/to/my/entry/filr.js'
	output:{
		filename:'bundle.js',
		path:_dirname+'dist'
	}
}

2 多入口配置:

mudule.exports = {
	entry:{
		app:'./src/app.js',
		search:'./src/search.js'
	},
	output:{
		filename:'[name].js',  //通过占位符来确保文件名的唯一
		path:_dirname+'/dist'
	}
};

Loaders 本身是个函数,接受源文件作为参数,返回转换结果。

webpack 开箱即用只支持js和json两种文件类型,通过Loaders 去支持其他文件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。

名称 描述
babel-loader 转换ES6,ES7等JS新特性语法
css-loader 支持.css文件的加载和解析
less-loader 将less文件转换成css
ts-loader 将TS转换成JS
file-loader 进行图片,字体等的打包
raw-loader 将文件以字符串的形式导入
thread-loader 多进程打包JS和CSS
const path = require('path');

module.exports = {
	output: {
		filename:'bundle.js'
	},
	module: {
		rules:[
			{test:/\.txt$/,use:'raw-loader'} //test指定匹配规则,use指定使用的loader名称
		]
	}
};

Plugins 用于 bundle 文件的优化,资源管理和环境变量注入,作用于整个构建过程

名称 描述
CommonsChunkPlugin 将chunks相同的模块代码提取成公共js
CleanWebpackPlugin 清理构建目录
ExtractTextWebpackPlugin 将css从bundle文件里提取成一个独立的css文件
CopyWebpackPlugin 将文件或者文件夹拷贝到构建的输出目录
HtmlWebpackPlugin 创建html文件去承载输出的bundle
UglifyjsWebpackPlugin 压缩JS
ZipWebpackPlugin 将打包出的资源生成一个zip包
const path = require('path');

module.exports = {
	output:{
		filename:'bundle.js'
	},
	plugins;[
		new HtmlWebpackPlugin({template:'./src/index.html'})//放到plugins数组里
	]
};

Mode 用来指定当前的构建环境是: production,development 还是 none

设置mode可以使用webpack内置的函数,默认值为production


  • Mode的内置函数的功能
选项 描述
development 设置process.env.NODE_ENV的值为development.开启NamedChunksPluginNamedModulesPlugin
production 设置process.env.NODE_ENV的值为production.开启FlagDependcyUsagePlugin,FlagIncludedChunksPlugin,ModuleConcatenationPlugin,NoEmitOnErrorsPlugin,OccurrenceOrderPlugin,SiderEffectsFlagPluginTerserPlugin.
none 不开启任何优化选项