这是一个打字机滚出插件 https://github.com/rollup/plugins/tree/master/packages/typescript 。 。 。 .
我们做了一些改变:
- 取决于修改后的版本
typescriptnpm 软件包 (@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 换句话说.