@cocos/rollup-plugin-node-resolve

中文文档
15.3.0发布于 2024/11/04MITTypeScriptESM + CJS近 30 天下载 2473

在节点模块中定位和捆绑第三方依赖性

中文使用文档
文档目录25 节
  1. 所需资源
  2. 安装
  3. 使用量
  4. 软件包入口
  5. 选项
  6. exportConditions
  7. browser
  8. moduleDirectories
  9. modulePaths
  10. dedupe
  11. extensions
  12. jail
  13. mainFields
  14. preferBuiltins
  15. modulesOnly
  16. resolveOnly
  17. rootDir
  18. ignoreSideEffectsForRoot
  19. allowExportsFolderMapping
  20. 保留符号链接
  21. 使用时使用@ rollup/ plugin- commonjs
  22. 解决已建内线( 如 fs (中文(简体) )
  23. 解决需要的语句
  24. 解析选项
  25. 元数据

npm size libera manifesto

@ rollup/ plugin- node- resolve

使用 : 节点解析算法,用于在 node_modules

所需资源

此插件需要一个 长期 节点版本(v14.0.0+)和"滚出"v2.78.0+.

安装

使用 npm :

npm install @rollup/plugin-node-resolve --save-dev

使用量

创建一个 rollup.config.js 配置文件 并导入插件 :

import { nodeResolve } from '@rollup/plugin-node-resolve';

export default {
  input: 'src/index.js',
  output: {
    dir: 'output',
    format: 'cjs'
  },
  plugins: [nodeResolve()]
};

那就打电话 rollup 要么通过 国 际 或 API 密码。 。 。 .

软件包入口

此插件支持来自节点js的软件包切入点特性,该特性在 exports 或者说 imports 字段。 检查 正式文件 了解更多信息,说明如何运作。 这是默认行为。 在这些地区 mainFields 将被使用.

选项

exportConditions

类型 : Array[...String]
默认 : []

Package.json导出字段的附加条件在解析模块时匹配. 默认情况下,此插件将查找 ['default', 'module', 'import'] 解决进口时的条件.

使用时 @rollup/plugin-commonjs v16 或更高, 此插件将使用 ['default', 'module', 'require'] 解决时的条件需要声明.

设置此选项将在默认条件外添加额外条件 。 见 https://nodejs.org/api/packages.html#packages 有条件的 exports 更多信息.

为了得到 解析节点.js的行为,设置为 ['node']。 。 。 .

browser

类型 : Boolean
默认 : false

若为 true,指示插件在 package.json 添加 'browser' 改为 exportConditions 如果它不在场, 浏览器条件为 exports 适用。 若为 false,包文件中的任何浏览器属性都将被忽略。 或者,价值为 'browser' 可添加到两个 mainFields 财务报告和审定财务报表 exportConditions 选项,但此选项优先于 mainFields。 。 。 .

软件包使用时此选项不起作用 软件包条目

moduleDirectories

类型 : Array[...String]
默认 : ['node_modules']

一份目录名称列表, 用于重复查找模块 .

modulePaths

类型 : Array[...String]
默认 : []

用于搜索模块的其他位置的绝对路径列表 . 这类似于设置 NODE_PATH 节点的环境变量。 。 。 .

dedupe

类型 : Array[...String]
默认 : []

一个 Array 模块名称,指示插件将指定的模块强制解析到根 node_modules。如果从依赖区导入了软件包,有助于防止同一软件包被多次捆绑.

dedupe: ['my-package', '@namespace/my-package'];

这会使纯进口产品减少,例如:

import 'my-package';
import '@namespace/my-package';

它将使深度进口减少,例如:

import 'my-package/foo.js';
import '@namespace/my-package/bar.js';

extensions

类型 : Array[...String]
默认 : ['.mjs', '.js', '.json', '.node']

指定插件将操作的文件的扩展名.

jail

类型 : String
默认 : '/'

在指定的路径(如chroot)内锁定模块搜索。 在此路径外定义的模块会被此插件忽略 .

mainFields

类型 : Array[...String]
默认 : ['module', 'main']
有效值 : ['browser', 'jsnext:main', 'module', 'main']

指定要扫描的属性 package.json,用于确定捆绑入点。 物业名称的顺序很重要,因为先得地产被用作已解决的出入口. 如果数组包含 'browser'键/值 package.json browser 属性将被使用.

preferBuiltins

类型 : Boolean | (module: string) => boolean
默认 : true (如果在本地版本上使用内建模块,则警告。) 设定为 true 以禁用警告。)

若为 true,插件将选择内置模块(例如:. fs, (中文(简体) ), path) (中文(简体) ). 若为 false,插件将查找本地安装的同名模块.

或者,您可以在返回布尔值的函数中通过,以确认插件是否应该选择内置模块。 譬如说.

preferBuiltins: (module) => module !== 'punycode';

不治疗 punycode 作为内置模块

modulesOnly

类型 : Boolean
默认 : false

若为 true,检查已解决的文件,以断言它们是ES2015模块.

resolveOnly

类型 : Array[...String|RegExp] | (module: string) => boolean
默认 : null

一个 Array 它指示插件将模块分辨率限制在名称符合数组图案的人. 注意: 不匹配任何模式的模块将被标记为外部模式 .

或者,您可以在返回布尔值的函数中通过,以确认模块是否应当包含.

实例:

  • resolveOnly: ['batman', /^@batcave\/.*$/]
  • resolveOnly: module => !module.includes('joker')

rootDir

类型 : String
默认 : process.cwd()

指定用于解决模块的根目录。 通常用于解决入点导入,以及解决去重复模块. 在一个单存储器包中执行滚动时有用 .

// Set the root directory to be the parent folder
rootDir: path.join(process.cwd(), '..')

ignoreSideEffectsForRoot

如果你使用 sideEffects 属性在 package.json 中,默认情况下,对根包中的文件尊重此选项。 设定为 true 忽略 sideEffects 根包的配置.

allowExportsFolderMapping

旧节点版本支持导出文件夹的映射

{
  "exports": {
    "./foo/": "./dist/foo/"
  }
}

这与"节点"14被贬值,被"节点"17被去除,相反建议采用"等出口模式"

{
  "exports": {
    "./foo/*": "./dist/foo/*"
  }
}

但是,为了反向兼容性,这个行为仍然通过启用 allowExportsFolderMapping (违约) true) (中文(简体) ). 默认值在将来的主要发行中可能会有变化.

此插件符合滚动 preserveSymlinks 选项.

使用时使用@ rollup/ plugin- commonjs

由于您节点- 模块文件夹中的大多数软件包可能都是遗留的 CommunityJS 而不是 JavaScript 模块, 您可能需要使用 @ rollup/ plugin- commonjs (英语)数字 :

// rollup.config.js
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: 'main.js',
  output: {
    file: 'bundle.js',
    format: 'iife',
    name: 'MyModule'
  },
  plugins: [nodeResolve(), commonjs()]
};

解决已建内线( 如 fs(中文(简体) )

默认情况下,此插件会比本地模块更偏好内置,将其标为外置.

见 preferBuiltins。 。 。 .

要提供节点内置的倒接版,请使用类似插件 卷起插孔-节点-填充 设置 preferBuiltins 改为 false例如.

import { nodeResolve } from '@rollup/plugin-node-resolve';
import nodePolyfills from 'rollup-plugin-node-polyfills';
export default ({
  input: ...,
  plugins: [
    nodePolyfills(),
    nodeResolve({ preferBuiltins: false })
  ],
  external: builtins,
  output: ...
})

解决需要的语句

根据 节点JS模块分辨率 require 语句应使用 require 组合导出字段的条件,而 es 模块应使用 import 条件.

节点解析插件使用 import 默认情况下,您可以选择使用 require 语义学通过向解析函数传递额外选项:

this.resolve(importee, importer, {
  skipSelf: true,
  custom: { 'node-resolve': { isRequire: true } }
});

解析选项

此插件解决了目标文件中的导入 ID 后 node_modules它会引用 this.resolve 和已解决的ID。 它将在解决方案中通过下列信息:

this.resolve(resolved.id, importer, {
  custom: {
    'node-resolve': {
      resolved, // the object with information from node.js resolve
      importee // the original import id
    }
  }
});

您的插件可以使用 importee 将原始导入映射到已解析文件的信息 node_modules,在插件钩子中,例如 resolveId。 。 。 .

这个 resolved 对象包含已解析的 id,它作为第一个参数被传递。 它也有财产 moduleSideEffects,其中可能包含 npm 值 package.json 字段 sideEffects 或者说 null。 。 。 .

元数据

捐款

利比里亚(麻省理工学院)

版本与发布记录

@cocos/rollup-plugin-node-resolve 共发布 1 个版本,首次发布于 2024/11/04;过去 12 个月发布了 0 个版本。

版本发布日期距今
15.3.0latest2024/11/042 年前

关于 @cocos/rollup-plugin-node-resolve 的常见问题

@cocos/rollup-plugin-node-resolve 是什么?

在节点模块中定位和捆绑第三方依赖性

如何安装 @cocos/rollup-plugin-node-resolve?

在项目目录运行 npm install @cocos/rollup-plugin-node-resolve,或使用 pnpm add / yarn add / bun add。

@cocos/rollup-plugin-node-resolve 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cocos/rollup-plugin-node-resolve 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cocos/rollup-plugin-node-resolve 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=14.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cocos/rollup-plugin-node-resolve 可以商用吗?

@cocos/rollup-plugin-node-resolve 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cocos/rollup-plugin-node-resolve 的下载量有多少?

根据 npm 官方下载统计,@cocos/rollup-plugin-node-resolve 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,473 次,日均约 82 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cocos/rollup-plugin-node-resolve 还在维护吗?

最新版本 15.3.0 发布于 2024/11/04(2 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/11/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。