当前位置: 首页 > 编程笔记 >

webpack4从0搭建组件库的实现

赵征
2023-03-14
本文向大家介绍webpack4从0搭建组件库的实现,包括了webpack4从0搭建组件库的实现的使用技巧和注意事项,需要的朋友参考一下

代码分离

代码分离方法有三种:

  • 入口起点:使用 entry 配置手动地分离代码。
  • 防止重复:使用 SplitChunksPlugin 去重和分离 chunk。
  • 动态导入:通过模块中的内联函数调用来分离代码。

动态导入(dynamic imports)

  • import()
  • require.ensure

预取/预加载模块(prefetch/preload module)

webpack v4.6.0+ 添加了预取和预加载的支持。

在声明 import 时,使用下面这些内置指令,可以让 webpack 输出 "resource hint(资源提示)",来告知浏览器:

  • prefetch(预取):将来某些导航下可能需要的资源
  • preload(预加载):当前导航下可能需要资源

配置项重点详解

(1)mode: "pruduction"
启用 minification(代码压缩) 和 tree shaking (usedExports:true)
自动指定DefinePlugin:process.env.NODE_ENV === 'production'

(2)devtool
source map 简介

生产环境:source-map
开发环境:inline-source-map

(3)optimization
splitChunks

splitChunks: {
 chunks: 'all', // 提取公共模块 loadash
 // 将第三方库(library)(例如 lodash 或 react)提取到单独的 vendor chunk 文件中,是比较推荐的做法
 // 利用 client 的长效缓存机制,命中缓存来消除请求,并减少向 server 获取资源,同时还能保证 client 代码和 server 代码版本一致。
 cacheGroups: {
  vendor: {
   test: /[\\/]node_modules[\\/]/,
   name: 'vendors',
   chunks: 'all'
  }
 }
},

runtimeChunk

runtimeChunk: 'single' // 提取引导模板 将 runtime 代码拆分为一个单独的 chunk

(5)output

// filename: '[name].[contenthash].js', // content hash 内容变化才会变化
filename: 'webpack-numbers.js', 
path: path.resolve(__dirname, 'dist'),

// 暴露 library 这是库名称 import from 'webpackNumbers'
library: 'webpackNumbers', 
libraryTarget: 'umd'

(6)plugins

HashedModuleIdsPlugin

const { HashedModuleIdsPlugin } = require('webpack');

plugins: [
  // 不会因模块增加和减少导致的模块内容变化,增加长缓存命中机制
  new HashedModuleIdsPlugin()
],

BundleAnalyzerPlugin

分析打包代码

const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer');

plugins: [
  new BundleAnalyzerPlugin()
]

到此这篇关于webpack4从0搭建组件库的实现的文章就介绍到这了,更多相关webpack4搭建组件库内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍从0搭建vue-cli4脚手架,包括了从0搭建vue-cli4脚手架的使用技巧和注意事项,需要的朋友参考一下 之前写了两期前后端分离的SpringBoot项目,从0搭建到整合Mybatis,但是只有后端没有前端的项目是不完整的,所以今天更新一篇从0搭建vue-cli4脚手架。 准备工作,有点类似java的jdk 安装node.js 直接去官网下载就可以https://nodejs.o

  • 创建和链接数据库 首先,我们需要有一个mysql的服务,你可以选择自己安装启动一个mysql服务,我选择了阿里云的云数据库RDS(和本地搭建没有区别,收费但不贵),我创建了一个数据库名叫db_shareditor(如果本地搭建的mysql,执行命令是create database db_shareditor) 下面我们配置我们的网站工程来连接这个数据库,修改shareditor/settings.

  • pv计算如何过滤爬虫 首先我们要理解爬虫是干什么的,爬虫是抓取你网页的内容,之后用于自己的搜索引擎或者做数据挖掘或者盗用,因此爬虫想要的其实是你的网页里的文本内容,也可能需要样式、布局等,但因为抓取效率的考虑,不会渲染里面的js,也不会抓取里面的图片链接,所以利用这一点,我们找到一个方法可以很好的过滤爬虫的干扰 创建js文件动态生成gif图片 创建web/static/web/my/pv.js,内

  • 本文向大家介绍webpack4+Vue搭建自己的Vue-cli项目过程分享,包括了webpack4+Vue搭建自己的Vue-cli项目过程分享的使用技巧和注意事项,需要的朋友参考一下 前言 对于vue-cli的强大,使用过的人都知道,极大的帮助我们降低了vue的入门门槛 最近在看webpack4,深感知识浅薄,这两天也一直在思考cli的配置,借助一些别人的实践,尝试自己搭建vue的项目,这里使用w

  • 极路由和优酷都提供了官方opkg软件仓库(package repository,又称软件源),但开发者无法提交新软件进去,一旦需要用的软件不在里面,怎么办?有两个办法:添加到开源仓库 或者 搭建自己的仓库。 添加到开源软件仓库 极路由、优酷、小米、魔豆使用的都是OpenWrt 12.09老系统,而OpenWrt.org官方已不再维护12.09和对应的仓库了,所以本站发起了一个开源项目——12.09

  • 本文向大家介绍从0开始搭建SVN服务器(图文详解),包括了从0开始搭建SVN服务器(图文详解)的使用技巧和注意事项,需要的朋友参考一下 机器环境:Win7 64位 Eclipse:Neon.1a Release (4.6.1) 在Win7上安装SVN server作为搭建代码服务器,在另外一台机器上提交代码进行测试。 一、SVN服务器配置 1.1下载与安装 到VISUALSVN SERVER官网下