webpack4.0基础
安装
yarn add webpack webpack-cli -D npx webpack index.js
图片
file-loader
module: {
rules: [
{
test: /\.(jpg|png|gif)$/,
use: {
loader: 'file-loader',
options: {
name: '[name]_[hash].[ext]', // 占位符
outputPath: 'images/'
}
}
}
]
},
把图片打包成64位字符串
url-loader
module: {
rules: [
{
test: /\.(jpg|png|gif)$/,
use: {
loader: 'url-loader',
options: {
name: '[name]_[hash].[ext]', // 占位符
outputPath: 'images/',
limit:
}
}
}
]
},
样式
style-loader
在HTML中创建一个style标签,标签内容是css
css-loader
允许JS中import一个css文件,把css文件当成一个模块
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
sass-loader / node-sass
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
postcss-loader
浏览器前缀
{
test: /\.scss$/,
use: [
'style-loader',
{
loader:'css-loader',
options: {
importLoaders:
}
}
'sass-loader',
'postcss-loader'
]
}
配置postcss.config.js
安装 autoprefixer
module.exports = {
plugins: [
require('autoprefixer')
]
}
模块化css
{
loader:'css-loader',
options: {
importLoaders: ,
modules: true
}
},
在js中引入模块css
import style from './assets/styles/global.scss' img.classList.add(style.avatar)
字体文件
file-loader
{
test: /\.(eot|svg|ttf|woff)/,
use: 'file-loader'
},
HTML模板
html-webpack-plugin
会在打包结束后生成一个HTML文件,并把打包生成的JS自动引入到HTML文件中
const HtmlWebpackPlugin = require('html-webpack-plugin')
plugins: [new HtmlWebpackPlugin({
template: './index.html'
})],
删除打包文件dist
clean-webpack-plugin
const CleanWebpackPlugin = require('clean-webpack-plugin')
new CleanWebpackPlugin()
devtool
打包生成的代码出错的时候,可以通过source map 定位错误在哪一行
devtool: 'none' // source-map
// cheap-module-eval-source-map 开发环境
// cheap-module-source-map // 线上环境
devServer
webpack-dev-server
启动服务器
devServer: {
contentBase:'/dist' // 在哪个文件启动服务器
},
package.json
"start": "webpack-dev-server",
配置跨域
proxy: {
"/api": "http://localhost:3000"
}
热模块替换(HMR)
// devServer
devServer: {
contentBase:'/dist',
hot: true,
hotOnly: true
},
// plugins
plugins: [
new webpack.HotModuleReplacementPlugin()
],
if (module.hot) {
module.hot.accept()
}
Babel
babel-loader @babel/core
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
@babel/preset-env / @babel/plugin-transform-runtime / @babel/runtime / @babel/runtime-corejs2
{
"presets": [
["@babel/preset-env",
]
],
"plugins": [
[
"@babel/plugin-transform-runtime", {
"corejs": ,
"helpers": true,
"regenerator": true,
"useESModules": false
}
]
]
}
React
@babel/preset-react
{
"presets": ["@babel/preset-react"]
}
完整配置
const { resolve } = require('path')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
filename:'[name]-[hash].js',
path: resolve(__dirname, 'dist')
},
devtool:'cheap-module-eval-source-map',
devServer: {
contentBase:resolve(__dirname, 'dist'),
hot: true,
hotOnly: true
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: resolve(__dirname, 'public/index.html')
}),
new webpack.HotModuleReplacementPlugin()
],
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
{
loader:'css-loader',
options: {
importLoader:
}
},
'postcss-loader'
]
},
{
test: /\.scss$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders:
}
},
'sass-loader',
'postcss-loader'
]
},
{
test: /\.(png|jpg|gif)$/,
use: 'url-loader'
},
{
test: /\.(wof)$/,
use: 'file-loader'
},
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader'
}
]
}
}
webpack4.0基础的更多相关文章
- webpack4.0各个击破(1)—— html部分
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- webpack4.0各个击破(2)—— CSS篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- webpack4.0各个击破(3)—— Assets篇
目录 一. Assets资源的基本处理需求 二. webpack处理引用资源 2.1 资源打标 2.2 引用优化 2.3 sprites雪碧图合成 2.4 图片压缩及其他 webpack作为前端最火的 ...
- webpack4.0各个击破(4)—— Javascript & splitChunk
目录 一. Js模块化开发 二. Js文件的一般打包需求 三. 使用webpack处理js文件 3.1 使用babel转换ES6+语法 3.2 脚本合并 3.3 公共模块识别 3.4 代码分割 3.5 ...
- webpack4.0各个击破(5)—— Module篇
webpack4.0各个击破(5)-- Module篇 webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决 ...
- webpack4.0各个击破(6)—— Loader篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- webpack4.0各个击破(7)—— plugin篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- webpack4.0各个击破(8)—— tapable篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- webpack4.0各个击破(9)—— karma篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
随机推荐
- 【最新】docker 安装elasticsearch + kibana步骤【第二篇_kibana】
本文主要讲解Docker 安装 kibana并设置中文语言 [如果有需要安装elasticsearch 的朋友请移步博主第一篇文章] 话不多说! 第一步:docker 下载kibana docker ...
- secureCRT 如何上传下载文件
首先连接相应服务器,然后在文件选项当中,打开SFTP功能,这个时候会生成一个新的标签栏. 下载: cd 到要下载文件的路径下 lcd 要存放文件的本地路径 get {filename} 例: cd ...
- day11 python名称空间 作用域
day11 python 一.三元运算符 def func(a, b): return a if a > b else b print(func(44,66)) 二:函数 ...
- mongodb的学习 (3)
聚合函数 - 添加基础数据:db.local.save({contry:'中国',name:'小明',score:77});db.local.save({contry:'中国',name:'小红',s ...
- js中如何避免动态引入重复资源
创建存储数据的数组或者对象: 每次调用方法的时候,往里面添加资源对象,包括路径: 每次调用的时候遍历此路劲是否存在,如存在,就调用此资源对象的promise进行操作. 可避免资源未加载完成就执行的情况 ...
- 阿里云智能推荐AIRec产品介绍
一.智能推荐(AIRec)简介 AIRec背景介绍 智能推荐(简称AIRec)基于阿里巴巴集团领先的大数据和人工智能技术,结合阿里巴巴在电商.内容.新闻.视频直播和社交等多个行业领域的积累,为全球企业 ...
- 64 计算机图形学入门(1)——OpenGL环境配置与图形流水线(图像管线)
0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一 ...
- SDNU 1217 CD收藏——并查集
Description lmh平常爱听歌,所以买了很多的CD来收藏,但是因为平常整理不当,所以忘记了这些CD的歌手是谁.现在他想知道他到底收藏了多少位歌手的专辑,于是他想了一个办法,同时拿出两 ...
- Devstack 多节点自动化部署
本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...
- adis16405 配置