@cocos/rollup-plugin-typescript

中文文档
12.1.2-cocos.2发布于 2024/12/26MITTypeScriptESM + CJS近 30 天下载 2629

Rollup和TypeScript之间的无缝集成.

中文使用文档
文档目录19 节
  1. 所需资源
  2. 安装
  3. 为什么?
  4. 使用量
  5. 选项
  6. exclude
  7. include
  8. filterRoot
  9. tsconfig
  10. typescript
  11. tslib
  12. transformers
  13. cacheDir
  14. noForceEmit
  15. 字典编译器选项
  16. 导入普通JS
  17. 保留 JSX 输出
  18. 快速编译
  19. 元数据

npm size libera manifesto

这是一个打字机滚出插件 https://github.com/rollup/plugins/tree/master/packages/typescript 。 。 。 .

我们做了一些改变:

  • 取决于修改后的版本 typescript npm 软件包 (@cocos/typescript(中文(简体) )
  • 将当前软件包重命名为 @cocos/rollup-plugin-typescript

最初的README如下:

@ rollup/ plugin 类型标记

QQ 为Rollup和Typescript之间的无缝集成而推出的滚动插件.

所需资源

此插件需要一个 长期 节点版 (v14.0.0+)和"滚出" v2.14.0+. 此插件至少还需要 类型脚本 3.7。 。 。 .

安装

使用 npm :

npm install @rollup/plugin-typescript --save-dev

注意两者 typescript 财务报告和审定财务报表 tslib 是需要单独安装的此插件的对等依赖.

为什么?

见 @ rollup/ plugin- babel。 。 。 .

使用量

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

// rollup.config.js
import typescript from '@rollup/plugin-typescript';

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

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

选项

插件加载任意 compilerOptions 从 tsconfig.json 默认文件。 将选项传递到插件直接覆盖这些选项:

...
export default {
  input: './main.ts',
  plugins: [
      typescript({ compilerOptions: {lib: ["es5", "es6", "dom"], target: "es5"}})
  ]
}

下列选项对 @rollup/plugin-typescript数字 :

exclude

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

A 类 picomatch 模式,或图案阵列,该图案将指定构建插件中的文件 忽略。默认情况下,不会忽略任何文件.

include

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

A 类 picomatch 模式,或图案阵列,指定构建插件中的文件。 默认全部 .ts 财务报告和审定财务报表 .tsx 文件被锁定.

filterRoot

类型 : String | Boolean
默认 : rootDir ? tsConfig.compilerOptions.rootDir ? process.cwd()

可选地解决包含并排除对照目录以外的模式 process.cwd()如果指定了字符串,则该值将作为基准目录。 相对路径将针对 process.cwd() 先说 若为 false,那么这些模式将不会以任何目录来解决.

默认情况下, 模式会解决您 TS 配置文件中的 rootDir 设置 .

在当前工作目录( process.cwd ())外解析文件时, 这可以修正插件错误 .

tsconfig

类型 : String | Boolean
默认 : true

设置为虚假时, 忽略配置文件中指定的任何选项 。 如果设置为对应文件路径的字符串,则指定的文件将作为配置文件使用.

typescript

类型 : import('typescript')
默认 : 同伴依赖

覆盖用于转接的TypeScript模块.

typescript({
  typescript: require('some-fork-of-typescript')
});

tslib

类型 : String
默认 : 同伴依赖

覆盖自定义版本的被注入的 TypeScript 助手.

typescript({
  tslib: require.resolve('some-fork-of-tslib')
});

transformers

类型 : { [before | after | afterDeclarations]: TransformerFactory[] } | ((program: ts.Program) => ts.CustomTransformers)
默认 : undefined

允许TypeScript自定义变压器在所支持的任何阶段注册:

  • 在此之前: 变压器将在TypeScript自己的变压器在原始的TypeScript文件中执行
  • 之后: 变压器将在转接代码的 TypeScript 变压器后执行
  • 声明之后: 变压器将在声明文件生成后执行, 允许修改现有的声明文件

支持的变压器工厂:

  • 全部 内置 TypeScript 自定义变压器工厂:

    • import('typescript').TransformerFactory 附加说明 变形器事实 钟声
    • import('typescript').CustomTransformerFactory 附加说明 自定义 Transformer 事实 钟声
  • 程序转换事实 代表一个变压器制造厂,使产生的变压器能够取出一个参考物 程序 实例

    {
      type: 'program',
      factory: (program: Program) => TransformerFactory | CustomTransformerFactory
    }
    
  • 类型检查器 Transformer Factory 代表一个变压器制造厂,使产生的变压器能够取出一个参考物 类型检查器 实例

    {
      type: 'typeChecker',
      factory: (typeChecker: TypeChecker) => TransformerFactory | CustomTransformerFactory
    }
    
typescript({
  transformers: {
    before: [
      {
        // Allow the transformer to get a Program reference in it's factory
        type: 'program',
        factory: (program) => {
          return ProgramRequiringTransformerFactory(program);
        }
      },
      {
        type: 'typeChecker',
        factory: (typeChecker) => {
          // Allow the transformer to get a TypeChecker reference in it's factory
          return TypeCheckerRequiringTransformerFactory(typeChecker);
        }
      }
    ],
    after: [
      // You can use normal transformers directly
      require('custom-transformer-based-on-Context')
    ],
    afterDeclarations: [
      // Or even define in place
      function fixDeclarationFactory(context) {
        return function fixDeclaration(source) {
          function visitor(node) {
            // Do real work here

            return ts.visitEachChild(node, visitor, context);
          }

          return ts.visitEachChild(source, visitor, context);
        };
      }
    ]
  }
});

或者,变压器可以在工厂内部产生.

支持的变压器工厂:

  • 全部 内置 TypeScript 自定义变压器工厂:

    • import('typescript').TransformerFactory 附加说明 变形器事实 钟声
    • import('typescript').CustomTransformerFactory 附加说明 自定义 Transformer 事实 钟声

上面的例子可以这样写:

typescript({
  transformers: function (program) {
    return {
      before: [
        ProgramRequiringTransformerFactory(program),
        TypeCheckerRequiringTransformerFactory(program.getTypeChecker())
      ],
      after: [
        // You can use normal transformers directly
        require('custom-transformer-based-on-Context')
      ],
      afterDeclarations: [
        // Or even define in place
        function fixDeclarationFactory(context) {
          return function fixDeclaration(source) {
            function visitor(node) {
              // Do real work here

              return ts.visitEachChild(node, visitor, context);
            }

            return ts.visitEachChild(source, visitor, context);
          };
        }
      ]
    };
  }
});

cacheDir

类型 : String
默认 : .rollup.cache (英语)

编译时 incremental 或者说 composite 选项插件将 存储在此文件夹中编译的文件。 这允许使用渐进式 汇编.

typescript({
  cacheDir: '.rollup.tscache'
});

noForceEmit

类型 : Boolean
默认 : false

较早版本 @rollup/plugin-typescript 要求 compilerOptions noEmit 财务报告和审定财务报表 emitDeclarationOnly 两种错误都是为了保证源代码被输入下一个插件/输出中. 这已经不是事实了。 此选项会禁用强制这些选项的值的插件, 转而遵从在 tsconfig.json。 。 。 .

noForceEmit 如果与您使用 @rollup/plugin-babel 财务报告和审定财务报表 @babel/preset-typescript。拥有 @rollup/plugin-typescript 仅使用 "emitDeclarationOnly": true 缓期执行 @rollup/plugin-babel 转接可以大幅降低 rollup 为大型项目建设时间.

字典编译器选项

一些打字符的 编译选项 影响 Rollup 如何构建文件.

noEmitOnError

类型 : Boolean
默认 : false

如果检测到类型出错, 当此选项被设定为真实时, 将中止 Rollup 构建 .

files, (中文(简体) ), include, (中文(简体) ), exclude

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

如果声明文件被列入 files 字段中 tsconfig.json 文档。 这些字段的源文件被忽略,因为Rollup的配置被取而代之.

忽略选项

这些编译器选项被 Rollup 忽略:

  • noEmitHelpers, (中文(简体) ), importHelpers编号: tslib 总是必须使用帮助模块.
  • noEmit, (中文(简体) ), emitDeclarationOnly: Typescript需要出出代码,用于插件工作.
    • 说明:虽然早年的重迭都是如此 @rollup/plugin-typescript已经不是了 推翻这种行为,并服从 tsconfig.json 关于这些选项,参见 noForceEmit 选项
  • noResolve: 防止打字符解决代码可能中断编译

导入普通JS

虽然不推荐,但可以配置此插件,处理从TypeScript导入的普通JS文件. 为此,您需要指定 CommonJS 作为模块格式并添加 @rollup/plugin-commonjs 将 TypeScript 生成的 CommonJS 输出转换到 ES 模块,以便滚动处理.

// rollup.config.js
import typescript from '@rollup/plugin-typescript';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: './main.ts',
  plugins: [
    typescript({ compilerOptions: { module: 'CommonJS' } }),
    commonjs({ extensions: ['.js', '.ts'] }) // the ".ts" extension is required
  ]
};

请注意,这往往会减少最佳产出.

保留 JSX 输出

每当选择保留JSX的输出被另一个变换步骤所进一步消耗时 tsconfig compilerOptions 设置 jsx: 'preserve' 或者说 压倒一切的选项,请记住,这个插件本身将无法保存JSX输出,通常以:

[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
file.tsx (1:15)
1: export default <span>Foobar</span>
                  ^

为了防止这种情况,确保使用橡子插件,即 acorn-jsx这将会让罗鲁普的橡子 手柄JSX标志。 (见 https://rollupjs.org/guide/en/#acorninjectplugins (英语)(中文(简体) )

添加后 acorn-jsx 插件, 您的 Rollup 配置将看起来像下面, 正确保存您的 JSX 输出 .

import jsx from 'acorn-jsx';
import typescript from '@rollup/plugin-typescript';

export default {
  // … other options …
  acornInjectPlugins: [jsx()],
  plugins: [typescript({ compilerOptions: { jsx: 'preserve' } })]
};

快速编译

此插件的前几个版本使用了 Typescript's transpileModule API,它速度快,但不进行打字检查,也不支持交叉文件特性,如 const enums和出没类型。 如果你想这样做,你可以使用 @ rollup/ plugin- surcrase 换句话说.

元数据

捐款

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

版本与发布记录

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

版本发布日期距今
12.1.2-cocos.2latest2024/12/261.9 年前

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

@cocos/rollup-plugin-typescript 是什么?

Rollup和TypeScript之间的无缝集成.

如何安装 @cocos/rollup-plugin-typescript?

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

@cocos/rollup-plugin-typescript 支持 TypeScript 吗?

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

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

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

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

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

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

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

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

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

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

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