当前位置: 首页 > news >正文

Rollup插件注入指南

@rollup/plugin-inject 插件概述

@rollup/plugin-inject 是 Rollup 官方提供的插件,用于在打包过程中向模块中注入变量或模块。适用于需要全局注入依赖(如process.env或第三方库)的场景,避免手动在每个文件中引入。


核心功能

  • 自动注入变量:将指定的变量或模块注入到每个文件的顶部,无需手动导入。
  • 灵活配置:支持通过正则匹配或自定义函数选择注入目标。
  • 兼容性处理:确保注入的变量符合模块规范(如 ESM 或 CJS)。

安装方法

通过 npm 或 yarn 安装插件:

npm install @rollup/plugin-inject --save-dev # 或 yarn add @rollup/plugin-inject --dev

基本配置

在 Rollup 配置文件中引入插件并配置注入规则:

import inject from '@rollup/plugin-inject'; export default { input: 'src/index.js', output: { file: 'dist/bundle.js', format: 'esm' }, plugins: [ inject({ // 注入配置 Promise: ['es6-promise', 'Promise'], // 将 `es6-promise` 的 Promise 注入为全局变量 process: 'process' // 注入 `process` 变量(需安装 `process` 包) }) ] };

配置选项详解

1. 键值对形式

通过对象键值对指定注入内容,键为全局变量名,值为模块路径或数组:

  • 单字符串{ variable: 'module-path' }
    直接注入module-path的默认导出。
  • 数组形式{ variable: ['module-path', 'named-export'] }
    注入module-path的具名导出。
2. 自定义解析

通过includeexclude控制注入范围:

inject({ Buffer: ['buffer', 'Buffer'], include: ['**/*.js'], // 仅对 JS 文件生效 exclude: ['node_modules/**'] // 排除 node_modules })
3. 动态注入

使用函数动态返回注入内容:

inject({ __buildEnv__: () => JSON.stringify(process.env.NODE_ENV) })

常见用例

注入全局变量
inject({ $: 'jquery', // 注入 jQuery 为全局 `$` _: 'lodash' // 注入 Lodash 为全局 `_` })
处理 Node.js 环境变量
inject({ process: 'process', // 注入 `process`(需安装 `process` 包) Buffer: ['buffer', 'Buffer'] // 注入 Buffer })
条件式注入
inject({ React: process.env.NODE_ENV === 'production' ? 'react/cjs/react.production.min.js' : 'react/cjs/react.development.js' })

注意事项

  1. 模块安装:确保注入的模块已安装为项目依赖(如processbuffer)。
  2. 命名冲突:避免与已有变量名冲突,可通过别名解决。
  3. 格式兼容:在非 ESM 格式(如 IIFE)中,需确保注入的变量符合全局作用域要求。

完整配置示例

import inject from '@rollup/plugin-inject'; export default { input: 'src/main.js', output: { format: 'esm', dir: 'dist' }, plugins: [ inject({ React: 'react', PropTypes: 'prop-types', exclude: ['**/test/*.js'], include: ['**/*.jsx?'] }) ] };
http://www.zskr.cn/news/1327951.html

相关文章:

  • 手把手教你用UE5 C++为角色添加动态攀爬:支持移动平台与高度自适应
  • 2026苏州闲置手表变现攻略:五大回收平台真实行情大测评 - 奢侈品回收测评
  • 从硬件物理测距到时空AI拓扑:全域空间感知代差技术体系综述
  • 每天节省25分钟!淘宝淘金币全自动任务脚本终极指南
  • 2026广州专利代办机构排名推荐:众致知识产权9年深耕登顶,五强榜单助力企业合规布局 - 速递信息
  • 独立开发者如何利用Taotoken快速上线并迭代AI功能原型
  • 3步掌握HTTrack:免费网站离线下载工具终极指南
  • 告别Transformer卡顿?用Mamba在3D医学影像分割上实现又快又准(附SegMamba实战代码)
  • docx2tex:5分钟掌握Word转LaTeX的终极完整指南
  • BBDown终极指南:高效下载B站视频的专业工具
  • 2026保山市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一修哥修缮
  • 从‘失效’到‘复活’:深入剖析空间平滑MUSIC算法在雷达/声呐DOA估计中的实战应用
  • 不止于点灯:用STM32F103和JDY-23蓝牙,打造你的第一个智能家居原型(附OLED状态显示)
  • PTA数据结构天梯赛L2-001:手把手教你用Dijkstra算法搞定双权值最短路径(附C语言完整代码)
  • 5分钟快速上手:VideoDownloadHelper视频下载助手完整教程
  • 技术驱动商业重构:追觅16万转高速马达如何跨界降维,引爆传统赛道?
  • 1000元携程礼品卡回收能换多少钱 - 购物卡回收找京尔回收
  • 手把手教你用Spark MLlib实现电影推荐系统(基于物品/用户协同过滤)
  • 2026 成都手表回收门店推荐:上门鉴定,实体老店名列前茅 - 奢侈品回收测评
  • CompletableFuture异步编程最佳实践
  • P3543 POI 2012 WYR-Leveling Ground Sol
  • 2026白山市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一修哥修缮
  • 2026 郑州装修公司口碑 TOP5 权威榜单(附核心优势与避坑指南) - 速递信息
  • 采购高低温交变试验箱前必看:如何判断厂家的综合实力? - 品牌推荐大师1
  • 保姆级教程:用国内镜像源5分钟搞定Spacy和en_core_web_lg模型下载安装
  • TrollInstallerX:iOS 14-16.6.1设备一键安装TrollStore的终极解决方案
  • 2026毕节市本地人必选的瓷砖空鼓专业维修公司TOP5推荐!卫生间空鼓翘边,厨房空鼓翘边,客厅空鼓翘边,全天响应,免费上门,5月专业瓷砖空鼓修复公司持证上岗师傅排名最新深度调研方案) - 一修哥修缮
  • Xcode 14 Archives打包上传TestFlight保姆级避坑指南(含ipa导出)
  • 从零到一:手把手教你用MetaMask创建钱包并完成第一笔Sepolia测试网转账(保姆级避坑指南)
  • 从磁铁到代码:用ST电机库5.4.4手把手实现你的第一个FOC电机驱动