文章目录

  • 1.安装webpack
  • 2.webpack转译成js
  • 3.警告去除
  • 4.webpack配置entry和output
  • 5.HTTP缓存
  • 6.weback生成html页面HtmlWebpackPlugin
  • 7.webpack引入css
  • 8.webpack-dev-server
  • 9.提取css文件 MiniCssExtractPlugin
  • 10.同时用两种webpack config文件
  • 11.两种webpack config文件继承简化
  • 12.webpack config merge 合并

webpack官方文档

1.安装webpack

终端查看版本:npm info webpack

命令安装:npm i -g webpack@4 webpack-cli@3

本地预览:webpack -dev -server

2.webpack转译成js

npm init -y
npm install webpack webpack-cli --save-dev

新建src/index.js 放上console.log(‘hi’)

./node_modules/.bin/webpack --version

npx webpack 得到main.js

//index.js
import x from './x.js'
console.log('hi')
console.log(x)//x.js
export default 'xxx'

3.警告去除

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

webpack.config.js

var path = require('path');module.exports = {mode: 'production',
};//mode可为两个值,development是详细注释,prodoction是简化版

4.webpack配置entry和output

var path = require('path');module.exports = {mode: 'development',entry: './foo.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'foo.bundle.js'}
};//改成
var path = require('path');module.exports = {mode: 'development',entry: './src/index.js',output: {filename: 'main.js'}
};

filename: ‘main.js’ 改成 filename: '[name].[hash].main.js’

此时npx webpack得main.34cdcb955e535284aa83.main.js

5.HTTP缓存

cache-control: public, max-age=31536000

首次访问网址下得js,css加载后缓存,二次访问直接从内存里拿

更新怎么办:文件名变化,由更新立马更新,无更新访问超快

首页index.html为什么不缓存:缓存后首页名无变化,便获取不到css、js变化

6.weback生成html页面HtmlWebpackPlugin

自动改文件名H

每次build前要删除dist文件,

需要在package.json的script里加上**“build”: “rm -rf dist&&webpack”,**

再进行 yarn build或者npm run bulid

生成HTML文件

搜webpack create html page

先保存到本地仓库,无用的放在.gitignore文件里并git commmit

yarn add html-webpack-plugin --dev

修改webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin');
var path = require('path');module.exports = {entry: 'index.js',output: {path: path.resolve(__dirname, './dist'),filename: 'index_bundle.js'},plugins: [new HtmlWebpackPlugin()]
};保留
var HtmlWebpackPlugin = require('html-webpack-plugin');
plugins: [new HtmlWebpackPlugin()]

yarn build得到dist里index.html

设置plugins:

[new HtmlWebpackPlugin({

title: “嘻嘻嘻”,

template: “./src/assets/index.html”,

})],

设置模板文件src\assets\index.html

手机端适配 meta name=“viewport” content=“width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no, viewport-fit=cover”>

标题title为**<%= htmlWebpackPlugin.options.title %>** (会随着webpack.config.js里title进行变化)

生成新的,存到dist文件显示的index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no, viewport-fit=cover"><title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
</body>
</html>

7.webpack引入css

原理:css-loader把css内容读到js里,style.css把他加上style标签放在head中

把新建的css,用x.js引用

import './x.css'

引入style-loader css-loader

npm install --save-dev style-loader css-loader

webpack.config.js内容

  module: {rules: [{test: /\.css$/,use: ["style-loader", "css-loader"],},],},

cd dist

hs -c-1预览即可

8.webpack-dev-server

原理:自动刷新,和dist文件无关,它在内存中搞定,会把index.js转译成可运行的js,放在内存中

webpack.config.js中

 mode: 'development',devtool: 'inline-source-map',devServer: {contentBase: './dist',},

package.json中

"start": "webpack-dev-server --open"
"start": "webpack-dev-server"//去掉--open不会打开浏览器

npm start

9.提取css文件 MiniCssExtractPlugin

需要安装mini-css-extract-plugin

npm install --save-dev mini-css-extract-plugin

Minimal example

const MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = {plugins: [new MiniCssExtractPlugin({// Options similar to the same options in webpackOptions.output// both options are optionalfilename: '[name].css',chunkFilename: '[id].css',}),],module: {rules: [{test: /\.css$/,use: [{loader: MiniCssExtractPlugin.loader,options: {// only enable hot in developmenthmr: process.env.NODE_ENV === 'development',// if hmr does not work, this is a forceful method.reloadAll: true,},},'css-loader',],},],},
};

给main.js加上哈希编号:

filename: '[name].[contenthash].css',
chunkFilename: '[id].[contenthash].css',

采用yarn start 替换yarn build,否则报错

10.同时用两种webpack config文件

  • 复制配置文件,名称改为webpack.config.prod.js,是生产环境,设mode: “production”,

  • 开发环境webpack.config.js改成use: [‘style-loader’, ‘css-loader’],style-load不用生成新文件,速度快

  • package.json为

    “start”: “webpack-dev-server”,

    “build”: “rm -rf dist && webpack –config webpack.config.prod.js”,

yarn start得开发环境的style标签,新建终端得yarn build的生产环境的css文件引用

11.两种webpack config文件继承简化

  • …base.plugins,
  • const base = require(’./webpack.config.base.js’)

webpack.config.base.js文件

const HtmlWebpackPlugin = require("html-webpack-plugin");
const path = require("path");module.exports = {entry: "./src/index.js",output: {filename: "[name].[hash].main.js",},plugins: [new HtmlWebpackPlugin({title: "喻峰",template: "./src/assets/index.html",}),],
}

webpack.config.js文件

const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const path = require("path");
const base = require('./webpack.config.base.js')module.exports = {...base,mode: "development",devtool: "inline-source-map",devServer: {contentBase: "./dist",},module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader'],}, ],},
};

webpack.config.prod.js

const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const path = require("path");
const base = require("./webpack.config.base.js");module.exports = {...base,mode: "production",plugins: [...base.plugins,new MiniCssExtractPlugin({filename: "[name].[contenthash].css",chunkFilename: "[id].[contenthash].css",ignoreOrder: false,}),],module: {rules: [{test: /\.css$/,use: [{loader: MiniCssExtractPlugin.loader,options: {// only enable hot in developmenthmr: process.env.NODE_ENV === "development",// if hmr does not work, this is a forceful method.reloadAll: true,},},"css-loader",],},],},
};

12.webpack config merge 合并

https://github.com/survivejs/webpack-merge

webpack-dev-server 的作用包括


  • 文件内容变化就自动转译代码,并自动刷新页面
  • 提供 server 方便开发预览
  • 将 JS 和 CSS 代码打包成对应的文件

webpack 的作用包括


  • 将一个或多个 JS 文件打包成对应的文件
  • 将一个或多个 CSS 文件打包成对应的文件
  • 压缩代码
  • 将高版本的 JS转译成低版本的 JS
  • 提供 server 方便开发预览

webpack工具知多少(上篇)相关推荐

  1. 四年级信息技术认识计算机,四年级信息技术第三课信息工具知多少

    一.教学目标: 1.了解信息工具有哪些: 2.认识电脑的组成:了解计算机硬件和软件的概念: 3.学习开机.关机的步骤. 4.建立对计算机的感性认识,培养学生学习.使用计算机的兴趣. 二.教学重点: 知 ...

  2. TypeScript笔记(3)—— 使用WebPack工具

    TypeScript(3): 使用WebPack工具 作者:李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.net/qq_28 ...

  3. Vue 项目 build 流程解析(webpack工具解析)

    Vue 项目 build 流程解析(webpack工具解析) 注:本篇文章解析框架为 vue2.0 本篇文章通过解析简单的项目打包步骤试着去了解我们的 Vue 项目是怎么打包的. build.js 干 ...

  4. 使用工具知乎点赞工具

    一.下载知乎点赞工具,下载链接:https://www.kancloud.cn/zhizengzhang/aaaaaa/2382097 二.解压,导入账号,全选,登录

  5. php编译工具 知乎,关于知乎回答问题编辑框用Ctrl+V 粘贴图片是如何实现的详解...

    貌似我没有像QQ邮箱之类的装知乎的插件 是用HTML5的新功能实现的吗? 看了@朱利安 的回答,发现我描述的不够清楚 我是用QQ截图之类的工具截的图,然后图片本身是保存在剪切板里的,剪切板中保存的*不 ...

  6. 知云文献翻译打不开_文献翻译工具-知云文献翻译

    推荐一款论文翻译工具:知云文献翻译 可直接进知云文献翻译的官网进行下载:windows知云文献翻译完整安装包下载,苹果mac版知云文献翻译安装包下载 ,安装完成以后,用微信扫描二维码即可使用,可直接在 ...

  7. gulp+webpack工具整合简介

    webpack简介 Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. webpack特点 Webpack 有两种组织模块依赖的方式 ...

  8. webpack打包压缩混淆_前端打包利器:webpack工具

    一.什么是WebPack,为什么要使用它? 1.为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端 ...

  9. 前端打包利器,webpack工具,app打包工具

    什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...

  10. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

最新文章

  1. Mac上安装hadoop
  2. 新手建站注意点,你有注意到没?
  3. c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确
  4. AdonisUI - 用于 WPF 应用程序的轻量级 UI 工具包,提供经典但增强的 Windows 视觉效果...
  5. IDA工具各个功能总结
  6. 输在学历的起跑线上?没关系,10本书助你技能爆表升职加薪
  7. windows核心编程第二章阅读
  8. 中调用view_在 View 上使用挂起函数
  9. Vulkan-NCNN 编译
  10. 【fiddler】用fiddler实现android手机抓包
  11. 推荐一个超级方便的Android 抓包工具 Chuck
  12. 思科模拟器基础实验完整流程-初级
  13. CMMI3级认证过程记录
  14. 【Android】实现应用简单的用户登录界面
  15. 云南钉钉早教、幼儿园、托儿所一体化智能管理系统解决方案
  16. 登录页面加密token和盐的作用
  17. 任意一个c语言程序实例,C语言程序实例大全下载-C语言程序设计实例大全 - 河东下载站...
  18. [经验] 系统封装常见问题大总结(非官方)
  19. 2021李宏毅老师最新40节机器学习课程!附课件+视频资料
  20. 路由基础(Routing)

热门文章

  1. Sisyphus.js 自动保存草稿 用法
  2. [ Vue.js ] 报错 ‘scope‘ is defined but never used vue/no-unused-vars
  3. matinee和matin区别_【近义词辨析】An和Année, Jour和Journée如何区别
  4. async异步问题(waterfall、parallel、eachSeries、map、whilst)
  5. 字符乱码出现的原因及解决办法
  6. Go语言自学系列 | 高效golang开发
  7. java编写平行四边形的代码_Java代码编写四边形
  8. flea-db使用之JPA分库分表实现
  9. vps一键测速脚本,包含vps配置测试、速度测试和回程路由测试
  10. 念念不忘,必有回响;若无回响,必有一伤