webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
webpack是前端工程构建工具,实现前端工程自动化:自动转化、自动装载、自动更新;
打包后的结果:单一入口,得到高度聚合的脚本代码,且具有压缩、混淆的特性;
前端主流框架: vue,react,angular ,统一的构建工具;
webpack 是高度可配置的。在开始前你需要先理解四个核心概念:
入口(entry)
入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。
输出(output)
output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。
loader
loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。
列表:https://www.webpackjs.com/loaders/
插件(plugins)
loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。
插件列表:https://www.webpackjs.com/plugins/
全局安装(一定要安装,不然无法使用webpack命令):
npm install -g webpack webpack-cli
本地安装:
npm install webpack webpack-cli --save-dev
注意:这里的--save-dev 不是注释的意思,而是将安装记录写入开发环境;
一、命令行打包:
webpack ./src/app.js -o ./dist --mode=development
-o 是out输出命令 , --mode 打包模式 ,development 开发模式 \ production 生产模式
webpack ./src/app.js -o ./dist_pro --mode=production
二、使用 webpack 配置文件打包
1. 创建webpack.config.js 文件
module.exports = { //入口文件 entry:"./src/app.js", //出口配置 output:{ //输出文件名称 filename:"bundle.js", //输出路径,要绝对路径 path:path.resolve(__dirname,'dist'), }, //开发模式(development), 生产模式(production) mode:'development'}
2. 在命令行中输入命令webpack回车;
3. index.html引入js脚本bundle.js;
三、loader 加载模块
1. 编辑webpack.config.js 文件,加入loader加载模块配置 module
const path = require('path',__dirname);console.log("路径",__dirname);module.exports = { //入口文件 entry:"./src/app.js", //出口配置 output:{ //输出文件名称 filename:"bundle.js", //输出路径,要绝对路径 path:path.resolve(__dirname,'dist'), }, //开发模式(development), 生产模式(production) mode:'development', //loader 的配置 module:{ // 对某个格式的文件进行转换处理规则 rules:[ { test:/\.css$/, use:[ // use 数组里面的loader顺序,从下到上,逆序执行 //将js样式内容插入到style标签例里 "style-loader", //将文件转换为js "css-loader" ] } ], }}
2. 创建style.css并加入到app.js中
3. index.html引入js脚本bundle.js;
loader 加载模块
1. 编辑webpack.config.js 文件,加入loader加载模块配置 module
const path = require('path',__dirname);console.log("路径",__dirname);module.exports = { //入口文件 entry:"./src/app.js", //出口配置 output:{ //输出文件名称 filename:"bundle.js", //输出路径,要绝对路径 path:path.resolve(__dirname,'dist'), }, //开发模式(development), 生产模式(production) mode:'development', //loader 的配置 module:{ // 对某个格式的文件进行转换处理规则 rules:[ { test:/\.css$/, use:[ // use 数组里面的loader顺序,从下到上,逆序执行 //将js样式内容插入到style标签例里 "style-loader", //将文件转换为js "css-loader" ] } ], }}
2. 创建style.css并加入到app.js中
var data = require("./data.json");require("./style.css"); // 将创建的style.css引入到app.js中function hello(){ alert("hello webpack!!!");}hello();console.log("关联的数据:",data);
3. 在命令行中输入命令webpack回车,打包完成后,打开index.html 进行测试;
部分素材来源网络,如有侵权请联系删除