webpack是什么?
Webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)
在Webpack 看来,前端的所有资源文件(js| json | css | img| sass…)都会作为模块处理
它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)
webpack 的五个核心概念
Enery
入口(Enery)指示 webpack 以那个文件为入口起点开始打包,分析构建内部依赖图
Output
输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去,以及如何命名
Loader
Loader 让 webpack 能够去处理那些非JavaScript 文件(webpack 自身只理解JavaScript)
Plugins
插件(Plugins)可以用于执行范围更广的任务,插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量
Mode
区分开发环境和生产环境的编译:development(开发环境)和production(生产环境)
如何区分:
把process.env.NODE_ENV 的值设为 development是开发模式
把process.env.NODE_ENV 的值设为 production是开发模式
webpack 创建和使用
创建:首先我们要创建一个目录,然后初始化 npm 执行 npm init 一路回车,或npm init -y 生成一个package.json文件, 然后在本地安装 webpack ,接着安装 webpack-cli
首先执行以下命令进行 webpack和webpack-cli 的全局安装
npm install webpack webpack-cli -g
然后创建一个项目的文件夹, 使用下面第一个命令进行初始化,生成package.json,执行第二命令进行webpack和webpack-cli的本地安装
npm init -y
npm install webpack webpack-cli --save-dev
简单的使用实例
创建一个webpack-dome文件夹, 然后使用命令安装webpack和webpack-cli
npm init -y
npm install webpack webpack-cli --save-dev
然后在这个项目文件夹中新建一个src文件夹和一个build文件夹,在里面创建两个文件, index.js和aa.js; index.js就是webpack的默认入口文件,而aa.js是index.js中用来举例引用的
aa.js中的内容为
export default {
name:'张三',
age:18
}
然后我们要输入下面的命令进行打包操作
这是开发环境进行打包
webpack ./src/index.js -o ./build --mode=development
这是生产环境进行打包
webpack ./src/index.js -o ./build --mode=production
./src/index.js 指定入口文件
-o 是指定输出文件的放置位置
./build 打包之后的文件(最新版webpack会自动生成一个main.ja,main.ja就是打包后的代码)
--mode= 是指定模式, development为开发模式, production 为生产模式
开发环境进行打包后的结果:
首先在npm中执行 webpack ./src/index.js -o ./build --mode=development 命令,执行完后为以下结果就代表你打包成功了
然后我们可以看到build文件中会出现一个main.js这就是打包完后生成的代码文件
你可在build文件夹中写一个index.html,并引入打包后生成的main.js来查看输出后的结果,结果为:
生产环境的打包和开发环境的打包步骤一样,不过main.js中的代码不同,结果为:
webpack模块化
在你开发完代码后,进行打包时webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目;有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包,webpack会帮你处理好的。