简介
@oasisdigital/rollup-plugin-node-resolve 是 Rollup 的一个插件,用于解析模块依赖关系。它通过 node-resolve
从 node_modules
目录中查找模块,与 rollup-plugin-commonjs
一起使用可以让 Rollup 打包更多的模块。
安装
使用 npm 进行安装:
npm install @oasisdigital/rollup-plugin-node-resolve --save-dev
使用
在配置文件中引入该插件并添加到 plugins
数组中即可使用。示例:
-- -------------------- ---- ------- ------ ------- ---- ------------------------------------------ ------ ------- - ------ -------------- ------- - ----- ----------------- ------- ------- -- -------- - --------- -------- ----- --------------- ----- -- - -
以上示例中,我们设置了 browser: true
来指定插件使用浏览器版本的 Node.js 核心模块,而不是原始 Node.js 版本。另外,我们设置了 preferBuiltins: false
来禁用自动使用核心模块而不解析。
参数说明
使用 resolve()
初始化插件时可以传入一些参数来进行配置。
browser
- Type:
boolean
- Default:
false
如果为 true
,则使用浏览器版本的 Node.js 核心模块,而不是原始 Node.js 版本。
mainFields
- Type:
Array
- Default:
['module', 'jsnext:main', 'main']
定义了按优先级解析的字段列表。按以下顺序查找入口文件:
module
jsnext:main
main
preferBuiltins
- Type:
boolean
- Default:
true
如果为 true
,则自动使用核心模块而不解析。如果为 false
,则不自动使用核心模块。
示例代码
假设我们有以下依赖关系:
main.js ├── moment └── lodash
我们可以使用 @oasisdigital/rollup-plugin-node-resolve
插件解析这些模块:
-- -------------------- ---- ------- ------ ------- ---- ------------------------------------------ ------ ------- - ------ -------------- ------- - ----- ----------------- ------- ------- -- -------- - --------- -------- ----- --------------- ----- -- - -
在本例中,我们开启了 browser
配置选项,默认情况下,插件使用 node
选项,这意味着插件将使用 Node.js 内置的核心模块解析依赖项。
这里我们还配置了 preferBuiltins
为 false
,这意味着插件不会使用 Node.js 内置的核心模块来解析依赖项。由于我们已经开启了 browser
配置选项,任何尝试使用 Node.js 内置的核心模块的语句都将自动转换为使用浏览器支持的版本。
这里我们使用一个简单的示例代码作为入口:
// src/main.js import moment from 'moment' import _ from 'lodash' console.log(_.isEmpty(moment()))
使用命令 rollup -c
进行打包后,我们可以在 dist/bundle.js 中看到打包后的代码:
-- -------------------- ---- ------- --------- -- - ---- -------- --- ------ - -------------- --- --------- - ----------------- --------------------------------- -----
我们可以看到插件使用了浏览器版本的 moment
和 lodash
,而且还转换了核心模块的语句。打包后的代码可以在浏览器中直接使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005739e81e8991b448e9948