安装

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基础的更多相关文章

  1. webpack4.0各个击破(1)—— html部分

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  2. webpack4.0各个击破(2)—— CSS篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  3. webpack4.0各个击破(3)—— Assets篇

    目录 一. Assets资源的基本处理需求 二. webpack处理引用资源 2.1 资源打标 2.2 引用优化 2.3 sprites雪碧图合成 2.4 图片压缩及其他 webpack作为前端最火的 ...

  4. webpack4.0各个击破(4)—— Javascript & splitChunk

    目录 一. Js模块化开发 二. Js文件的一般打包需求 三. 使用webpack处理js文件 3.1 使用babel转换ES6+语法 3.2 脚本合并 3.3 公共模块识别 3.4 代码分割 3.5 ...

  5. webpack4.0各个击破(5)—— Module篇

    webpack4.0各个击破(5)-- Module篇 webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决 ...

  6. webpack4.0各个击破(6)—— Loader篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  7. webpack4.0各个击破(7)—— plugin篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  8. webpack4.0各个击破(8)—— tapable篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  9. webpack4.0各个击破(9)—— karma篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

随机推荐

  1. 使用SQLiteOpenHelper管理SD卡中的数据库

    本人在网上找了好多大牛的资料,研究了几天终于调试出来了.以下是笔记: SQLiteOpenHelper是Android框架为我们提供的一个非常好的数据库打开.升级与关闭的工具类.但是这个工具类会自动把 ...

  2. centos6.5大于2T容量硬盘分区、格式化、挂载!

    一.  超过2T容量硬盘使用parted创建分区 1.fdisk l(查看需要分区的硬盘盘符如:sda) 2.parted /dev/sda 3.rm 1 4.mklabel gpt(超过2T磁盘格式 ...

  3. spring中bean的高级属性之list, set, map以及props元素(含举例)

    转自:http://qingfeng825.iteye.com/blog/144704 list, set, map和props元素分别用来设置类型为List,Set,Map和Propertis的属性 ...

  4. Scala(一)基础

    OOP 面向对象编程 AOP 面向切面编程 FP 函数式编程 编程语言都要定义变量,一些代码是用来注释的,变量和变量之间有一些关系,要做一些运算,运算离不开流程控制,进行运算的数据往往来自数据结构,最 ...

  5. Image另存为其他格式

    string imgPath = @"C:\ZHM01000001400001-01 青龙 白虎.tif"; Image img = Image.FromFile(imgPath) ...

  6. leetcode-161周赛-5249-移除无效的括号

    题目描述: 自己的提交:O(N) class Solution: def minRemoveToMakeValid(self, s: str) -> str: #from collections ...

  7. read more阅读更多,文字超过三行字符后面添加省略号

    var text;$('.blog-item').each(function (i) {text = $(this).find('.blog-excerpt').html();if (text.len ...

  8. rails问题检查

    在做rails postgresql过程中,使用同事的老代码,然后坐到db:migrate时发现总是报错 这种错误是无法在百度或者google搞定的,需要去进入到底层查看 所以需要进入相关文件看,到d ...

  9. JCF——工具类

  10. NX二次开发-BlockUI的Tree树控件

    关于BlockUI的Tree树控件只要研究UGOPEN里西门子官方的那个例子在结合去查NXOPEN的帮助基本就可以了.[不过我是看唐工的视频学会的,没办法自己领悟性不太强] //=========== ...