webpack4流程笔记
初始化
mkdir webpack-demo ->新建文件夹
cd webpack-demo ->进入文件夹
- 第一步 npm init -y -> 初始化项目(生成package.js)
- 第二步 npm install webpack webpack-cli --save-dev ->(下载webpack与webpack-cil)
加载资源
- CSS: npm install --save-dev style-loader css-loader
- 图片: npm install --save-dev file-loader
- 数据: npm install --save-dev csv-loader xml-loader
- ES6解析: npm install -D babel-loader @babel/core @babel/preset-env
npm i -D style-loader css-loader file-loader csv-loader xml-loader babel-loader @babel/core @babel/preset-env
目前为止学习的所有插件:
- 第三步 @babel/core @babel/preset-env autoprefixer babel-loader css-loader file-loader html-webpack-plugin mini-css-extract-plugin postcss-loader style-loader webpack webpack-cli webpack-dev-server
- ->(把以学过的所有插件加载下来)
下载本地服务器
- 第四步 npm i webpack-dev-server -D -> (dev-server会生成一个虚拟服务器)
进入监视模式: webpack --watch
- 进入监视模式之后不需要再次输入 npm run build 保存文件自动刷新页面
server的命令
- 在浏览器打开: webpack-dev-server --open
改变端口号: webpack-dev-server --open --port 3000
直接打开html: webpack-dev-server --open --port 8080 --contentBase src
server的配置
devServer: { // 开发服务器的配置
port: 3000, // 端口号
progress: true, //
contentBase: './dist', // 打开的文件路径
open: true // 是否打开
},
分离css的插件
- 插件: npm i -D html-webpack-plugin
- new MiniCssExtractPlugin({
filename: 'main.css'
}) - use里配置: MiniCssExtractPlugin.loader
自动添加CSS3前缀的插件
- 插件: npm i -D postcss-loader autoprefixer
- 然后配置一个 postcss.config.js 的文件
- module.exports = {
plugins: [require('autoprefixer')]
}
压缩CSS的插件
- 插件: npm -D optimize-css-assets-webpack-plugin;
- const optimizeCss = require('optimize-css-assets-webpack-plugin');
optimization: { // 优化项
minimizer: [
new optimizeCss()
]
},
压缩JS的插件
- 插件: npm -D uglifyjs-webpack-plugin;
- const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
new UglifyJsPlugin({ // 压缩JS
cache: true, // 是否缓存
parallel: true, // 是否压缩多个
sourceMap: true // es6的源码映射
}),
解析ES6的插件
- 插件: npm install -D babel-loader @babel/core @babel/preset-env
- 插件2(解析更高级的语法ES7): npm i -D @babel/plugin-proposal-class-properties
- 插件3: npm i -D @babel/plugin-transform-runtime 依赖: @babel/runtime -save
{
test: /.js$/,
use: {
loader: 'babel-loader',
options: { // babel-loader 把es6转换成es5
presets: [
'@babel/preset-env'
]
}
}
},babel-loader: 解析es6的loader
@babel/core: 模块
@babel/preset-env: 把高级语法转换成es5的插件
JS代码效验插件
插件: npm i eslint eslint-loader -D
解析less
{
test: /.less$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'less-loader'
]
}
设置HtmlWebpackPlugin
- 插件: npm install --save-dev html-webpack-plugin
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html',
minify: {
removeAttributeQuotes: true, // 删除index里的双引号
collapseWhitespace: true, // 折叠空行 变成一行
},
// hash: true // 哈希戳
}),
webpack.config.js配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 分离css的插件 module.exports = {
mode: 'development', // 模式 默认两种 production-生产 development-开发
entry: { // 入口
index: './src/index.js'
},
devtool: 'inline-source-map', // 报错源
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader'
]
},
{
test: /\.js$/, // normal 普通的
use: {
loader: 'babel-loader',
options: { // babel-loader 把es6转换成es5
presets: ['@babel/preset-env']
}
},
include: path.resolve(__dirname, 'src'),
exclude: /node_modules/
},
{
test: /\.(png|svg|jpg|gif)$/,
use: {
loader: 'file-loader',
options: {
outputPath: '../imgs/'
}
}
},
{ test: /\.(woff|woff2|eot|ttf|otf)$/, use: ['file-loader'] }
]
},
plugins: [
new HtmlWebpackPlugin({ // 创建新的html
template: './src/index.html',
filename: 'index.html'
}),
new MiniCssExtractPlugin({
filename: './css/main.css'
})
],
devServer: { // 打开浏览器
contentBase: './dist',
open: true,
port: 3000,
inline: true
},
output: { // 出口
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}
}
package.json scripts配置
"build": "webpack",
"watch": "webpack --watch",
"start": "webpack-dev-server --open",
"server": "node server.js"
设置HtmlWebpackPlugin
- 插件: npm install --save-dev html-webpack-plugin
- 蓝文件夹:
const HtmlWebpackPlugin = require('html-webpack-plugin');
plugins: [
new HtmlWebpackPlugin({
title: 'Output Management'
})
],
清理/dist文件夹
npm install --save-dev clean-webpack-plugin
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
new CleanWebpackPlugin(),
webpack4流程笔记的更多相关文章
- Spark任务流程笔记
Spark学习笔记总结 02. Spark任务流程 1. RDD的依赖关系 RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide de ...
- webpack4.x笔记-配置基本的前端开发环境(一)
webpack的基本使用 webpack 本质上是一个打包工具,它会根据代码的内容解析模块依赖,帮助我们把多个模块的代码打包.借用 webpack 官网的图片: 虽然webpack4.x的版本可以零配 ...
- webpack4 自学笔记三(提取公用代码)
全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/commonT ...
- webpack4 自学笔记五(tree-shaking)
全部的代码及笔记都可以在我的github上查看, 欢迎star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/ThreeS ...
- webpack4 自学笔记四(style-loader)
全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/css 引入- ...
- webpack4 自学笔记二(typescript的配置)
全部的代码及笔记都可以在我的github上查看, 唤醒star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/typesc ...
- webpack4 自学笔记一(babel的配置)
所有代码都可以再我的github上查看,每个文件夹下都会有README.md,欢迎star: https://github.com/Jasonwang911/webpackStudyInit/tree ...
- memcached-1.4.20 主要启动流程笔记
以下笔记主要是关注tcp模式下memcached的启动过程. main() 设置信号处理函数为sig_handler() 初始化系统设置,保存在全局变量settings里面 settings_init ...
- webpack4学习笔记(二)
webpack打包各种javascript文件 (本文只是提供一个学习记录,大部分内容来自网络) 一,打包js文件和es6代码 1,webpack命令打包js文件 Tip: 在webpack4.x之前 ...
随机推荐
- 【总结整理】JQuery基础学习---动画
jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...
- Linux中发布项目的一些命令笔记
记一下,Linux中发布项目的一些难记的命令: .安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep ja ...
- Spring的概况
----------------siwuxie095 Spring 的简介 Spring 是一个轻量级 控制反转(IoC) 和 面向切面(AOP) 的容器框架 年,它是为了解决企业应用开发的复杂性而诞 ...
- Centos下添加/删除用户
useradd具体参数 [root@yhwang ~] useradd -h Usage: useradd [options] LOGIN useradd -D useradd -D [options ...
- 【NLP】中文分词:原理及分词算法
一.中文分词 词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键. ...
- 一款Regular expression在线检测工具
记录下我自己使用的一款正则表达式使用工具 https://regex101.com/ 输入正则表达式后,可以在下面的“TEST STRING”中来测试对应的字符串是否满足该正则表达式 个人觉得非常好用
- URAL 2019 Pair: normal and paranormal (STL栈)
题意:在一个半圆内,有2*n个点,其中有大写字母和小写字母.其中你需要连接大写字母到小写字母,其中需要保证这些连接的线段之间没有相交. 如果能够实现,将大写字母对应的小写字母的序号按序输出. 析:我把 ...
- vivado中如何调用chipscope或者impact
vivado中并没有集成chipscope和impact,所以需要安装ISE,安装完ISE后进行以下操作: 1) 选择环境变量中的系统变量,新建以下变量 XILINX ...
- Error creating form bean of class com.onlinebookstore.presentation.CatalogBean
Error creating form bean of class com.onlinebookstore.presentation.CatalogBean 可能是action form未编译 这个问 ...
- java线程基础知识----java daemon线程
java线程是一个运用很广泛的重点知识,我们很有必要了解java的daemon线程. 1.首先我们必须清楚的认识到java的线程分为两类: 用户线程和daemon线程 A. 用户线程: 用户线程可以简 ...