将打字稿与 RollUp 捆绑在一起 - 无法处理编译器选项
Bundling typescript with RollUp - Couldn't process compiler options
我正在尝试捆绑我的打字稿文件 RollUp (https://rollupjs.org/)
我使用了这个配置文件:
rollup.config.js:
import alias from 'rollup-plugin-alias';
import resolve from 'rollup-plugin-node-resolve';
import typescript from 'rollup-plugin-typescript';
import angular from 'rollup-plugin-angular';
export default {
entry: '../main.ts',
format: 'iife',
dest: 'dist/bundle.es2015.js',
sourceMap: true,
plugins: [
angular(),
typescript(),
alias({ rxjs: __dirname + '/node_modules/rxjs-es' }),
resolve({
jsnext: true,
main: true,
browser: true
})
],
external: [
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@angular/router-deprecated'
],
globals: {
'@angular/common': 'vendor._angular_common',
'@angular/compiler': 'vendor._angular_compiler',
'@angular/core': 'vendor._angular_core',
'@angular/http': 'vendor._angular_http',
'@angular/platform-browser': 'vendor._angular_platformBrowser',
'@angular/platform-browser-dynamic': 'vendor._angular_platformBrowserDynamic',
'@angular/router': 'vendor._angular_router',
'@angular/forms': 'vendor._angular_forms'
}
}
vendor.js:
import * as _angular_common from '@angular/common';
import * as _angular_compiler from '@angular/compiler';
import * as _angular_core from '@angular/core';
import * as _angular_http from '@angular/http';
import * as _angular_platformBrowser from '@angular/platform-browser';
import * as _angular_platformBrowserDynamic from '@angular/platform-browser-dynamic';
import * as _angular_router from '@angular/router';
import * as _angular_forms from '@angular/forms';
export default {
_angular_common,
_angular_compiler,
_angular_core,
_angular_http,
_angular_platformBrowser,
_angular_platformBrowserDynamic,
_angular_router,
_angular_forms
};
但我不断收到此错误:
rollup-plugin-typescript: Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'.
rollup-plugin-typescript: Unknown compiler option 'lib'.
rollup-plugin-typescript: Couldn't process compiler options
我做错了什么? (我是新手,所以如果我没有写一些需要的信息 - 请告诉我)
编辑:
这是我的 tsconfig.json:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
"outDir": ".\Compiled-JS\Apps\Client",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
您可能需要使用 rollup-plugin-typescript2。
rollup-plugin-typescript 似乎默认支持1.8.9,这也可能是部分问题。
我找到了解决方案 ,无需切换到 rollup-plugin-typescript-2
。
事实证明(请记住 Denis Tsoi 的回答中描述的问题)您需要做的就是传递 rollup-plugin-typescript
您自己本地安装的 Typescript 版本,如下所示:
import ts from 'rollup-plugin-typescript';
import typescript from 'typescript'
const config = {
plugins: [
ts({
typescript
})
]
};
export default config;
原始解决方案可以在这里找到:
https://github.com/rollup/rollup-plugin-typescript/issues/114#issuecomment-399100699
在我的例子中,rollup-plugin-typescript-2 遇到了其他错误,几乎没有相关文档(在撰写本文时 post)。
因此,在不切换汇总插件的情况下,我通过修复 tsconfig.json compilerOptions 解决了这个错误。我把 include
属性 放错地方了。我终于明白了,错误是指tsconfig.json里面的compilerOptions中的一个不支持或不正确的属性。有关支持的 属性 值的示例,请参阅讨论 here。例如,目前似乎还不支持 module: commonjs
。
例如,target
和 module
的支持值
"target": "ES2015 (or greater)",
"module": "ES2015, ES2020, or ESNEXT"
rollup 插件已更新,现在可以使用您安装的任何版本的 typescript 作为对等依赖项。
我正在尝试捆绑我的打字稿文件 RollUp (https://rollupjs.org/)
我使用了这个配置文件:
rollup.config.js:
import alias from 'rollup-plugin-alias';
import resolve from 'rollup-plugin-node-resolve';
import typescript from 'rollup-plugin-typescript';
import angular from 'rollup-plugin-angular';
export default {
entry: '../main.ts',
format: 'iife',
dest: 'dist/bundle.es2015.js',
sourceMap: true,
plugins: [
angular(),
typescript(),
alias({ rxjs: __dirname + '/node_modules/rxjs-es' }),
resolve({
jsnext: true,
main: true,
browser: true
})
],
external: [
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@angular/router-deprecated'
],
globals: {
'@angular/common': 'vendor._angular_common',
'@angular/compiler': 'vendor._angular_compiler',
'@angular/core': 'vendor._angular_core',
'@angular/http': 'vendor._angular_http',
'@angular/platform-browser': 'vendor._angular_platformBrowser',
'@angular/platform-browser-dynamic': 'vendor._angular_platformBrowserDynamic',
'@angular/router': 'vendor._angular_router',
'@angular/forms': 'vendor._angular_forms'
}
}
vendor.js:
import * as _angular_common from '@angular/common';
import * as _angular_compiler from '@angular/compiler';
import * as _angular_core from '@angular/core';
import * as _angular_http from '@angular/http';
import * as _angular_platformBrowser from '@angular/platform-browser';
import * as _angular_platformBrowserDynamic from '@angular/platform-browser-dynamic';
import * as _angular_router from '@angular/router';
import * as _angular_forms from '@angular/forms';
export default {
_angular_common,
_angular_compiler,
_angular_core,
_angular_http,
_angular_platformBrowser,
_angular_platformBrowserDynamic,
_angular_router,
_angular_forms
};
但我不断收到此错误:
rollup-plugin-typescript: Argument for '--target' option must be 'ES3', 'ES5', or 'ES2015'.
rollup-plugin-typescript: Unknown compiler option 'lib'.
rollup-plugin-typescript: Couldn't process compiler options
我做错了什么? (我是新手,所以如果我没有写一些需要的信息 - 请告诉我)
编辑:
这是我的 tsconfig.json:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
"outDir": ".\Compiled-JS\Apps\Client",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
您可能需要使用 rollup-plugin-typescript2。
rollup-plugin-typescript 似乎默认支持1.8.9,这也可能是部分问题。
我找到了解决方案 ,无需切换到 rollup-plugin-typescript-2
。
事实证明(请记住 Denis Tsoi 的回答中描述的问题)您需要做的就是传递 rollup-plugin-typescript
您自己本地安装的 Typescript 版本,如下所示:
import ts from 'rollup-plugin-typescript';
import typescript from 'typescript'
const config = {
plugins: [
ts({
typescript
})
]
};
export default config;
原始解决方案可以在这里找到:
https://github.com/rollup/rollup-plugin-typescript/issues/114#issuecomment-399100699
在我的例子中,rollup-plugin-typescript-2 遇到了其他错误,几乎没有相关文档(在撰写本文时 post)。
因此,在不切换汇总插件的情况下,我通过修复 tsconfig.json compilerOptions 解决了这个错误。我把 include
属性 放错地方了。我终于明白了,错误是指tsconfig.json里面的compilerOptions中的一个不支持或不正确的属性。有关支持的 属性 值的示例,请参阅讨论 here。例如,目前似乎还不支持 module: commonjs
。
例如,target
和 module
"target": "ES2015 (or greater)",
"module": "ES2015, ES2020, or ESNEXT"
rollup 插件已更新,现在可以使用您安装的任何版本的 typescript 作为对等依赖项。