Skip to content
On this page

什么是 webpack

webpack 可以看做一个模块打包机,它做的事情是,分析你的项目架构,找到 JavaScript 模块以及其他的一些浏览器不能直接运行的拓展语言 (scss、typeScript 等),并将其打包为合适的格式以供浏览器使用。

可以做的事情

代码转换、文件优化、代码分割、模块合并、自动刷新、代码校验、自动发布

需要提前掌握的内容

  • 需要 node 基础、以及 npm 的使用
  • 掌握 es6 语法

为什么需要构建工具

转换 es6 语法

转换 jsx

css 前缀补全 / 预处理器

压缩混淆

图片压缩

前端构建的演变之路

ant + YUI Tool -> grunt -> fis3/glup -> rollup/webapck/parcel

webpack 安装

安装本地的 webpack

webpack webpack-cli -D

mkdir webpack-demo && cd webpack-demo
npm init -y
npm install webpack webpack-cli --D
mkdir src
1
2
3
4

实践后发现首次打包必须新建 src 目录

查看 webpack 版本

./node_modules/.bin/webpack -V
1

webpack 可以进行 0 配置

1 打包工具 -> 输出后的结果 (js 模块)

这时候的目录结构是这样的

webpack-demo
  |- package.json
+ |- /src
+   |- index.js
1
2
3
4

这时候我们在 index.js 中写一个

console.log("打印日志")
1

输入指令

npx webpack
1

npx 的作用如下:

  1. 默认情况下,首先检查路径中是否存在要执行的包(即在项目中)

  2. 如果存在,它将执行;

  3. 若不存在,意味着尚未安装该软件包,npx 将安装其最新版本,然后执行它;

目录发生了变化

webpack-demo
  |- package.json
+ |- /dist
+  	|- main.js
  |- /src
    |- index.js
1
2
3
4
5
6

我们就可以打包后的文件出现在了 dist 目录下

打包(支持我们的 js 的模块化)

为了方便工程化的 js

使用 module.exposts 抛出

module.exports = {
    a: 1
}
1
2
3

使用 require 的方式接受参数

let str = require('./a.js')
1

手工配置 webpack

默认配置文件名字 webpack.config.js

初始 webpack 配置文件名称

webpack 配置文件 webpack.config.js

可以通过 webpack --config 指定配置文件

新建一个 webpack.config.js

// webpack 是node写出来的 node的写法来运行
let path = require('path');

module.exports={
    mode: 'development', // 模式(环境)  默认两种 production development
    entry:'./src/index.js', // 入口 指定默认的entry为 './src/index.js'
    output:{
        filename:'bundle.js', // 打包后的文件名
        path: path.resolve(_dirname,'dist'), //路径必须是一个绝对路径
    }, // 导出默认 './dist/main.js'
  modlue:{
  	rules:[ // loader配置
      {text:/.txt$/,use:'raw-loader'}
    ],
    plugins:[ // 插件配置
    	new HtmlwebpackPlugin({
      	template:'./src/index.html'
      })
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

那么这样你就可以打包到 dist 下叫做 budle 的名称了

npx webpack
./node_modules/.bin/webpack

都可以打包出webpack
1
2
3
4

如果在 packjson 中加入 build,也可以进行打包

{
  "name": "webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.44.2",
    "webpack-cli": "^3.3.12"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
沪ICP备20006251号-1