使用 RollUp 捆绑打字稿 - 无法处理编译器选项

Posted

技术标签:

【中文标题】使用 RollUp 捆绑打字稿 - 无法处理编译器选项【英文标题】:Bundling typescript with RollUp - Couldn't process compiler options 【发布时间】:2017-09-16 02:14:05 【问题描述】:

我正在尝试捆绑我的打字稿文件 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
  

【问题讨论】:

你的 tsconfig.json 是什么? - 当typescript( tsconfig: false ) 时这也有效吗? @DenisTsoi: 我添加了我的 tsconfig.json...当我使用 tsconfig: false - 我得到一个“意外字符'@'”错误,好像它不知道它是打字稿(因为角度 2) 的“@NgModule”。 你也在用github.com/ezolenko/rollup-plugin-typescript2吗? 将目标从 es2017 更改为 es2015 也可能在 rollup-plugin-typescript 中不支持 lib 选项 这是 typescript2。 【参考方案1】:

您可能需要使用rollup-plugin-typescript2。

Rollup-plugin-typescript 似乎默认支持 1.8.9,这也可能是问题的一部分。

【讨论】:

【参考方案2】:

我找到了一个解决方案无需切换到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 捆绑打字稿 - 无法处理编译器选项的主要内容,如果未能解决你的问题,请参考以下文章

使用汇总生成打字稿定义文件

是否可以在子文件夹中运行打字稿编译器?

如何调试打字稿代码,在 vscode/vs2015 中使用 webpack 捆绑

无法使用 tsc 节点模块编译打字稿

无法在 Docker 中编译打字稿

使用打字稿表达无法查找视图目录