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之前 ...
随机推荐
- sharepoint SDDL 字符串包含无效的SID或无法转换的SID
安装过程中出现以下错误 采用独立模式安装Sharepoint Server 2013/Foundation 2013,在进行配置向导的时候会碰到这样的错误 System.ArgumentExcepti ...
- 02_android下单元测试
Java的单元测试JUnit. Java程序入口是main方法.一般不在安卓程序入口 @Override protected void onCreate(Bundle savedInstanceSta ...
- vue的安装配置
1.访问vue的官网: https://cn.vuejs.org/v2/guide/installation.html安装配置 2.安装淘宝镜像项目搭建 .安装node 到官网下载安装. (中)h ...
- 八数码 Java实现
参考http://blog.csdn.net/helloworld10086/article/details/41853389 package com.EightNumber.view; import ...
- Java学习之多态(Polymorphism)
多态==晚绑定 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = new Child(); 当使用多态方 ...
- 301ReidrectPages中重复记录导致的500 server error
在Umbraco平台开发一个系统时,遇到一个问题,报错500 server error, system is currently unable to handle this request. 按下F1 ...
- UVaLive 11525 Permutation (线段树)
题意:有一个由1到k组成的序列,最小是1 2 … k,最大是 k k-1 … 1,给出n的计算方式,n = s0 * (k - 1)! + s1 * (k - 2)! +… + sk-1 * 0!, ...
- 【转】C# 使用正则表达式去掉字符串中的数字,或者去掉字符串中的非数字
源地址:http://www.cnblogs.com/94cool/p/4332957.html
- 手写堆的dijkstra
颓废.. #include <cstdio> #include <cstring> #include <algorithm> using namespace std ...
- Python Day24
AJAX 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作 ...