webpack4从0搭建组件库的实现

 更新时间:2020年11月29日 08:35:08   作者:lihaixing  
这篇文章主要介绍了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搭建组件库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现下拉框的动态添加(附效果)

    JS实现下拉框的动态添加(附效果)

    页面初加载时:选择车类型后:选择车颜色后:JS实现下拉框的动态添加,网页代码如下:动态添加下拉框 车类型:请选择宝马、奔驰 车颜色
    2013-04-04
  • 使用url-loader处理图片等资源文件的方法步骤

    使用url-loader处理图片等资源文件的方法步骤

    在Web开发中,处理图片、字体等资源文件是一个常见的需求,传统的做法是将这些资源文件放在静态目录中,然后在HTML或CSS中引用,然而,这种方法在构建工具(如Webpack)中并不总是最理想的,为了解决这个问题,可以使用url-loader,需要的朋友可以参考下
    2025-04-04
  • 微信小程序实现音乐播放器

    微信小程序实现音乐播放器

    这篇文章主要为大家详细介绍了微信小程序实现音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • js 设置缓存及获取设置的缓存

    js 设置缓存及获取设置的缓存

    这篇文章主要介绍了js如何设置缓存及获取设置的缓存,需要的朋友可以参考下
    2014-05-05
  • 基于chosen插件实现人员选择树搜索自动筛选功能

    基于chosen插件实现人员选择树搜索自动筛选功能

    这篇文章主要介绍了基于chosen插件实现人员选择树搜索自动筛选功能的相关资料,需要的朋友可以参考下
    2016-09-09
  • uni-app小程序沉浸式导航实现的全过程

    uni-app小程序沉浸式导航实现的全过程

    在跨端项目开发中,uniapp是个不错的框架,下面这篇文章主要给大家介绍了关于uni-app小程序沉浸式导航实现的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • 新手学习前端之js模仿淘宝主页网站

    新手学习前端之js模仿淘宝主页网站

    淘宝网大家在熟悉不过了,那么淘宝网首页模板是怎么做的呢?今天小编抽时间给大家分享新手学习前端之js模仿淘宝主页网站的相关资料,需要的朋友可以参考下
    2016-10-10
  • JavaScript数据结构之双向链表定义与使用方法示例

    JavaScript数据结构之双向链表定义与使用方法示例

    这篇文章主要介绍了JavaScript数据结构之双向链表定义与使用方法,简单介绍了双向链表的原理,并结合实例形式分析了双向链表的定义与使用方法,需要的朋友可以参考下
    2017-10-10
  • 原生js实现自定义滚动条组件

    原生js实现自定义滚动条组件

    这篇文章主要为大家详细介绍了原生js实现自定义滚动条组件的开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 点击广告后才能获得下载地址

    点击广告后才能获得下载地址

    点击广告后才能获得下载地址...
    2006-10-10

最新评论