zhuanghaixin / Interview

8 stars 0 forks source link

[webpack]如何使用webpack #109

Open zhuanghaixin opened 3 years ago

zhuanghaixin commented 3 years ago

Webpack初识

webpack是什么?

是一种构建工具,通过它可以用来转换ES6语法,转换JSX, CSS前缀补全/预处理器,代码压缩混淆,图片压缩

为什么学习webpack?

vue-cli 的底层实现原理,学习了它,可以更加方便的去使用 vue-cli vue-cli可以做什么?

怎么使用Webpack

你需要知道一些Webpack基础概念

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

配置的组成部分

image

安装webpack

创建空⽬目录和package.json

mkdir my-project
cd my-project
npm init -y

安装webpack 和webpack-cli

npm install webpack webpack-cli --save-dev

检查是否安装成功:

./node_modules/.bin/webpack -v

一个简单的例子

1.创建一个webpackconfig.js

'use strict'

const path = require('path')

module.exports ={
    entry:'./src/index.js', // 1.入口文件
    output:{  // 2.出口文件
        path:path.join(__dirname,'dist'),
        filename:'bundle.js'
    },
    mode:'production' // 3. 生产环境

}

2.创建src/helloworld.js和入口文件src/index.js

helloworld.js


export function helloWorld(){
    return 'hello webpack'
}

index.js

import {helloWorld} from "./helloworld";

document.write(helloWorld())

运行

 ./node_modules/.bin/webpack 

image

创建dist/index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>

运行dist/index.html

image 这样就成功了

也可以通过npm run build运行构建

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


{
"name": "my-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config webpack.config.js --mode production"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^5.11.0",
"webpack-cli": "^4.3.0"
}
}
zhuanghaixin commented 3 years ago

Webpack基础用法(一)

Webpack核心概念

entry 入口

output 出口 ⽤用来告诉webpack 如何将编译后的⽂文件输出到磁盘

zhuanghaixin commented 3 years ago

Webpack基础用法(二)

解析es6和react jsx

解析css,less,sass

解析图片和字体

webpack的文件监听

webpack的热更新以及原理分析

文件指纹策略:chunkhash、contenthash和hash

html、css和javascript代码压缩

zhuanghaixin commented 3 years ago

Webpakc进阶用法