webpack4用法

HFSS 3D Layout仿真PCB操作说明 本文介绍一种特别适合PCB这种叠层结构的仿真软件,HFSS 3D Layout既有操作的简便性,又有同3D软件仿真所有的精确性,仿真速度上又比3D软件快很多。 阅读详情

目录

1. entry

2. output

3. hash

4. mode

5. devtool

6. optimization

7. resolve 

8. module.rules

9. 常用的plugin


1. entry

webpack的入口

// 单文件写法
entry: {
    index: '/app/index.js',
    about: '/app/about.js',
}

// 多文件写法,将多个文件打包到同一个bundle中
entry: {
    index: ['webpack-hot-middleware/client', '/app/index.js'],
    vendors: ['react', 'react-dom', 'redux', 'react-router'],
}

2. output

webpack的输出,指示webapck如何输出、以及输出到哪里、输出的格式等。

path:输出文件的目录。

filename:输出的文件名,一般跟entry配置相对应。

chunkFilename:块,非入口entry模块,会自动拆分文件,也就是常说的按需加载,与路由中的require.ensure相对应

publicPath:文件输出的公共路径

output: {
    path: path.resolve(__dirname, '/assets'),
    // entry中的文件对应的文件名
    filename: 'js/[name].js',
    // 动态加载的文件对应的文件名
    chunkFilename: 'js/[name].[chunkhash:8].js',
    publicPath: '/static/',
}

// 按需加载
// webpack会以'./chunk'为新的入口生成一个chunk
// 代码只有执行到import语句时,才会动态加载chunk对应的文件
// import返回一个promise对象,可以调用then方法接受返回值
import(/* webpackChunkName: 'chunkName' */ './chunk').then();

3. hash

常用的hash有三种:

hash:模块标识符,一般应用于filename。

chunkhash:按需加载内容的hash,根据chunk自身的内容计算而来。

contenthash:提取css文件时根据内容计算而来的hash

4. mode

webpack4 新增的

// development,开发环境,代码不会被压缩,开启代码调试
// production,生产环境,会压缩代码,关闭调试
mode: 'development' || 'production';

5. devtool

控制是否生成,以及如何生成source map文件,开发环境下有利于定位问题,默认false。

开启会影响编译速度,所以生产环境要关闭。

devtool: 'eval-source-map';

6. optimization

optimization是webpack4新增的,主要用于开发者自定义优化构建打包的策略配置。

minimize:true/false,告诉webpack是否开启代码最小化压缩。

minimizer:自定js优化配置,会覆盖默认配置,结合UglifyJsPlugin插件使用。

removeEmptyChunks: bool值,检测并删除空的块。

splitChunks:取代了CommonsChunkPlugin,自动分包拆分、代码拆分。

splitChunks: {
  chunks: 'async',
  minSize: 30000,
  maxSize: 0,
  minChunks: 1,
  maxAsyncRequests: 5,
  maxInitialRequests: 3,
  automaticNameDelimiter: '~',
  name: true,
  cacheGroups: {
    vendors: {
      test: /[\\/]node_modules[\\/]/,
      priority: -10
    },
    default: {
      minChunks: 2,
      priority: -20,
      reuseExistingChunk: true
    }
  }
}

7. resolve 

配置模块如何解析

extensions:自动解析确定的扩展名,扩展名自动补齐 。

alias:配置路径一些别名。

modules: webpack解析模块时应该搜索的目录。

resolve {
    extensions: ['.js', '.jsx', 'css', 'scss'],
    alias: {
        src: path.resolve(__dirname, '../src'),
    },
    modules: ['node_modules'],
}

8. module.rules

rules:之前的loaders

test:正则表达式,匹配编译的文件

exclude:排出的文件

include:正好与exclude相反

use-loader:相当于test匹配到的文件的解析器

user-options:配合loader使用,可以是字符串或者对象

modules: {
    rules: [
        {
            test: /\.jsx?$/,
            use: ['babel-loader'],
        },
        {
            test: /\.s?css$/,
            use: [
                'style-loader', 
                'css-loader',
                {
                    loader: 'postcss-loader',
                    options: {
                        plugins: () => [require('autoprefixer')],
                    },
                }, 
                'postcss-loader', 
                'sass-loader'
            ],
        }
    ],
}

9. 常用的plugin

UglifyJsPlugin 压缩js代码

HtmlWebpackPlugin 自动生成HTML模板,并将打包后的js文件插入HTML中。

MiniCssExtractPlugin 提取css代码 

IEM模型,地表粗糙度模拟 利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟 立即下载

相关推荐

中兴FTTR光猫变简易OLT:低成本搭建全光监控与局域网实战指南

本文详细介绍了如何将中兴FTTR光猫改造为简易OLT设备,实现低成本全光监控与局域网扩展。通过LOID认证、桥接模式设置及终端数破解,用户可利用二手设备搭建高性能光纤网络,适用于远程监控和长距离组网场景,显著降低部署成本。

chair的专栏 2040

详细记录前端项目使用import懒加载组件打包失败的踩坑之路

最后还是回到babel.config.js文件,尝试把这个配置删了'@vue/cli-plugin-babel/preset',奇迹出现了,果然成了。

yorcentroll的博客 4240

手把手教你用Docker快速部署开源MES系统(附避坑指南)

本文提供了一份详细的实战指南,手把手教你使用Docker容器化技术快速部署开源MES系统。内容涵盖从环境准备、项目选型、数据库配置到应用服务器优化、前端部署及生产环境监控的全流程,并附有避坑指南,旨在帮助中小制造企业IT人员和开发者低成本、高效率地构建智能制造解决方案。

f0g1h2的博客 1065

Webpack打包之坑 _ webpackChunkName【魔法注释】

Webpack打包之坑 _ webpackChunkName【魔法注释】 目录 事件起因 百度查阅 webpackChunkName 结束了

Mr.小灰狼_随笔 1万+

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3801

影像组学分析流程中,图像分割前要做的事(图像预处理)

在InputVolume中无法找到自己想要重采样的序列,这时可以检查一下序列的Volume type是不是MRMLMulti。这时,Volume type将由MRMLMulti改为Scaler,随后即可在3D slicer中完成Resample Scaler Volume。2.1、重采样:通过3Dslicer中的Resample Scaler Volume实现。具体设置参数:spacing(1,1,1),Interpolation选择Bspline。2、图像预处理:重采样和标准化。

weixin_45011313的博客 3725

webpack中动态import()打包后的文件名称定义

动态import()打包出来文件的name是按照0,1,2...依次排列,如0.js、1.js等,有的时候我们希望打包出来的文件名是打包前的文件名称。要实现这,需要经历3个步骤: 1.在webpack配置文件中的output中添加chunkFilename。命名规则根据自己的项目来定,其中[name]就是文件名,这一块更详细的说明请点击这里。 //其他代码... output: { pat...

逝水流光的博客 2万+

STM32开发 -- 4G模块开发详解(1)

这部分一直再看,资料都已经整理好了,但是一直没有汇总。接下来就详细的看一下,GSM这部分是怎么实现的。

不积跬步,无以至千里 5万+

webpack性能优化(上)

webpack做为一款当下最流行的前端构建工具,一直以来以门槛太高而受人诟病,且没有一个通用的配置适合所有的项目,为此我们不得不开心的(大误:smiley:)手动配置我们的项目,开启我们的配置工程师之路,本文主要是对webpack的一些基础配置的解释和我们能做的一些优化工作,适合有使用过webpack的前端开发者阅读,各位在阅读过程中不妨打开自己的项目来跟着我一起优化。 分割配置文件 dev ...

weixin_34235105的博客 459

【笔记篇】Davinci Configurator OS模块(上)

主要讲解了AUTOSAR OS配置项和Vector MICROSAR OS的特性

weixin_47571898的博客 2274

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f架构,显著提升模型精度与推理效率

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

FJN110的博客 113

在 vue 路由懒加载中给 Webpack Chunks 命名

最早的路由定义方式 import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import About from '../views/About.vue' import Login from '../views/Login.vue' Vue.use(VueRoute...

VITAMIN的博客 2613

Calibre :Standard Verification Rule Format(SVRF) Manual (1-2)

摘要:SVRF规则文件是用于Calibre和ICverify工具的脚本文件,包含层定义、规则检查、注释、预处理指令等元素。规则文件支持全局/局部层定义、隐式层操作,以及条件编译指令(#DEFINE/#IFDEF等)。宏功能(DMACRO/CMACRO)可实现代码复用,支持参数化层操作和嵌套调用。预处理指令支持版本控制(#IFDEFCALIBRE_VERSION)和环境变量默认值设置(#PRAGMAENV)。宏中的层名具有局部作用域,可通过特殊语法实现全局层名指定,LOCAL()修饰符可创建调用作用域内的唯一

u013620135的博客 1342

webpack4.0基本用法

webpack4.0 4.0基本用法 总结了一下webpack4.0基本用法, 基本上所有配置都有注释说明,超级详细啊! dist是打包目录 const path = require('path'); const uglify = require('uglifyjs-webpack-plugin'); //js压缩插件 const htmlPlugin = require('html-webpa...

tangkebo的博客 378

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【webpack4系列】webpack进阶用法(三)

一个模块可能有多个⽅法,只要其中的某个⽅法使⽤到了,则整个⽂件都会被打到bundle ⾥⾯去,就是只把⽤到的⽅法打⼊ bundle ,没⽤到的⽅法会在uglify阶段被擦除掉。uglify阶段:将 JavaScript代码进行压缩、混淆,并去除一些不必要的代码,从而减小文件体积。webpack4及以上默认内置了,当mode为production情况下默认开启。进行tree shaking条件是必须是 ES6 的语法,CJS 的⽅式不⽀持。

mengran_code的博客 2190

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【webpack4系列】webpack基础用法(二)

我们需要注意的是,polyfill的体积是很大的,如果我们不做特殊说明,它会把你目标浏览器中缺失的所有的es6的新的功能都做垫片处理。但是我们没有用到的那部分功能的转换其实是无意义的,造成打包后的体积无谓的增大,所以通常,我们会在presets的选项里,配置"useBuiltIns": “usage”,这样一方面只对使用的新功能做垫片,另一方面,也不需要我们单独引入import '@babel/polyfill’了,它会在使用的地方自动注入。经过 Webpack 的处理,最终会输出浏览器能使用的静态资源。

mengran_code的博客 1789

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深入学习webpack 4.x核心用法及其源码(二)

上一小节我简单介绍了 webpack 的一些用法,它的核心用法我还没有介绍,webpack 默认只会对 js 的一些代码进行打包,不可以对 css 样式进行打包,或把二进制图片打包成 data URL,热更新 Loader 介绍 loader 用于对模块的源代码进行转换。例如:typescript 转换成 js,less 转换为 css 等。 使用 webpack 4.x 有三种使用 loader...

qq_43389371的博客 247

深入学习webpack 4.x核心用法及其源码(一)

注:我是用的是webpack 4.x 版本 什么是webpack? 它就是一个 模块打包 工具 (Module Bilder) 模块加载方式 它就是我们使用导入或导出模块的规范,主要有四种: CommonJS (node) 就是使用 require 导入,module.exports 导出 ES6 模块 (常用) 使用 import 导入,export 导出 AMD CMD 安装 最好是安装...

qq_43389371的博客 273

mini-css-extract-plugin 的用法(webpack4)

今天在使用webpack的extract-text-webpack-plugin插件提取单独打包css文件时,报错,说是这个插件要依赖webpack3的版本。 后面查了一下,webpack4得使用mini-css-extract-plugin这个插件来单独打包css。 mini-css-extract-plugin这个插件的用法如下: const MiniCssExtractPlu...

weixin_30872867的博客 755

webpack4学习:多页应用打包、配置source-map、watch的用法等等

多页应用打包: webpack配置文件:由于有两个页面需要打包,所以new了两个HtmlWebpackPlugin插件来对应各自的html模板。chunks就算用来引入js文件的,需要引入的js文件名放上去就行,如果有多个就可以这么写 chunks: [‘other’, ‘home’] 引入了other.js以及home.js这两个文件。 配置source-map: source-map的配置可以便于我们打包后调试代码,如果有代码报错可以在控制台查看到报错代码的具体地方。source-map可以有很

weixin_46831501的博客 1303

深入学习webpack 4.x核心用法及其源码(四)

这一章主要是一些关于 webpack 打包组件、库的一些配置 引入方式 我们可以通过配置 webpack 来实现不同方式的引用,不管是 import 、require、AMD方式 引入都可以正常的引入,通过把 libraryTarget设置成 umd 就可以了 webpack.config.js module.exports = { entry: './src/index.js', ...

qq_43389371的博客 280

深入学习webpack 4.x核心用法及其源码(五)

自己编写一个 Loader 目录结构: 我在 loaders 目录下写了一个 replaceLoader.js 的文件,代码如下: module.exports = function(source) { return source.replace('world', '你好') } 其实 Loader 就是一个函数,但是不可以使用 箭头函数 ,为什么?因为箭头函数会改变我们的指向 s...

qq_43389371的博客 237

webpack基础用法(4):文件指纹策略和压缩

目录1 文件指纹策略1.1 JS的文件指纹设置1.2 CSS的文件指纹设置1.2.1 安装插件1.2.2 配置1.3 图片的文件指纹设置2 代码压缩2.1 JS压缩2.2 CSS压缩2.2.1 安装依赖2.2.2 配置2.3 html文件压缩2.3.1 安装依赖2.3.2 配置 1 文件指纹策略 文件指纹是指打包后输出的文件名的后缀 指纹策略: Hash:和整个项目的构建相关,只要项目文件有修改,整个项目构建的hash值就会更改 Chunkhash:和 webpack 打包的 chunk 有关, 不同的

qq_25776891的博客 657

深入学习webpack 4.x核心用法及其源码(三)

想实现更小的打包内容。 Tree Shaking 介绍 webpack 2.0 之后开始提供;Tree Shaking 只支持 ES Module(import) 的引入 具体什么意思呢?如果你想导入一个 .js 文件(多个方法)中的一个方法。webpack 默认会将这个文件中的所有代码都打包,这就不是我想要的,我要的是我导入那个就给我打包那个方法,所以我们需要借用 Tree Shaking ...

qq_43389371的博客 279

webpack4(未完)

webpack4一些浅显的使用心得 最近琢磨了一阵webpack4,还是有蛮多收获的,虽然平常开发的时候大多数情况下都是用vue-cli直接搭建项目,但是当有某些特殊需求的时候还是要自己修改webpack配置,故而我觉得有必要对webpack进行研究 1、什么是webpack webpack is a module bundler,这是webpack官网上的一句话,意思就是webpack是一个模块...

qq_39776508的博客 243

webpack4打包

webpack 4不再需要配置文件,下面来测试一下: 首先创建一个目录:test 然后使用cmd初始化 npm init -y 引入webpack4 npm i webpack --save-dev 继续引入webpack-cli npm i webpack-cli --save-dev 这个时候我们的文件夹是这样的: 然后修改package.json,加入build脚...

Callback_heaven 668
上一篇: 如何使用EXISTS和IN的写出易于理解的SQL语句
下一篇: css 特殊属性用法
也无风雨丶
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值