webpack 是一个现JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会分析你的项目结构,递归地构建一个依赖关系图(dependency graph),其中包含应用程序须要的每一个模块,而后将全部这些模块按照指定的规则打包成一个或多个 bundle,过程当中能够经过配置把一些浏览器不能直接运行的拓展语言(scss,typescript等)转换为合适的格式。javascript
webpack 用于编译 JavaScript 模块。一旦完成安装,你就能够经过 webpack 的 CLI 或 API 与其配合交互。css
新建demo文件夹,npm init初始化项目, 局部安装webpack。html
项目的基本结构
一般会在项目的根目录创建两个文件夹,分别为src文件夹和dist(或build)文件夹java
使用webpack的基本文件
<!-- dist/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Webpack Sample Project</title> </head> <body> <div id='root'> </div> <script src="bundle.js"></script> </body> </html>
// src/Greeter.js module.exports = function() { var greet = document.createElement('div'); greet.textContent = "Hi there and greetings!"; return greet; };
// src/main.js const greeter = require('./Greeter.js'); document.querySelector("#root").appendChild(greeter());
1.终端中使用
node
# {extry file}处填写入口文件的路径 # {destination for bundled file}处填写打包文件的存放路径 webpack {entry file} {destination for bundled file}
若是webpack不是全局安装的,那么当你在终端中使用此命令时,须要额外指定其在node_modules中的地址webpack
# webpack非全局安装的状况 node_modules/.bin/webpack src/main.js dist/bundle.js
命令执行成功后,会在dist目录下出现bundle.js文件,index.html就能够在浏览器中预览结果了。web
2.经过配置文件来使用Webpack
typescript
根目录下建立webpack.config.js, 配置entry、output,终端中使用时能够不用每次都手动添加。npm
const path = require('path'); module.exports = { entry: __dirname + "/src/main.js", //已屡次说起的惟一入口文件 output: { path: __dirname + "/dist", //打包后的文件存放的地方 filename: "bundle.js" //打包后输出文件的文件名 } }
webpack 或 webpack --config webpack.config.js
注:json
- “__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。
- 文件中path也能够这样写
path: path.resolve(__dirname,'dist')
, 注意须要引入‘path’, path.resolve(__dirname,'dist')获取了项目的绝对路径- 非全局需使用
node_modules/.bin/webpack
- 若是 webpack.config.js 存在,则 webpack 命令将默认选择使用它,终端命令能够不明确指出,若是命名为其余名字,须要
--config xxx
指明但愿使用的配置文件。
3.npm 脚本
一般webpack推荐局部安装,所以在命令行中输入命令相似于node_modules/.bin/webpack这样的路径比较麻烦,能够在package.json中对scripts对象进行相关设置便可,设置方法以下
{ ... "scripts": { "start": "webpack" // 修改的是这里,JSON文件不支持注释,引用时请清除 }, ... }
为何能够直接写webpack,而不须要写路径,详见 webpack安装踩坑中关于npm 脚本原理的内容。
运行
npm run start 或 npm start //除了几个默认的命令,如start等,run不能够省略。
webpack的基本使用就完成了……
<!-- index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Webpack Sample Project</title> </head> <body> <div id='root'> </div> <script src="greet.js"></script> <script src="main.js"></script> </body> </html>
// greet.js function greeter() { var greet = document.createElement('div'); greet.textContent = "Hi there and greetings!"; return greet; };
// main.js document.querySelector("#root").appendChild(greeter());
会有一些问题: