在TypeScript中导入js文件而不与Rollup捆绑在一起

时间:2018-11-23 11:27:59

标签: typescript typescript-typings rollupjs

我有一个简单的TypeScript + Rollup配置,请参见minimal working example here

文件夹结构如下:

src/mwe.ts
vendor/verovio.js    <-- library, that I would like to use
vendor/verovio.d.ts  <-- content (for now): declare module 'verovio'

现在我正在尝试在verovio.js中使用mwe.ts

import * as verovio from '../vendor/verovio.js'

export default class DummyClass {
  constructor() {
    let foo: any = new verovio.toolkit()
  }
}

我的目标是在执行js编译器和汇总时,将js库简单地复制到dist文件夹中,而不是捆绑到我自己的库中。我只是不理解该怎么做。据我所知,这里的问题包括两件事:

  1. 类型定义未正确处理:error TS2306: File '[...]/mwe/vendor/verovio.d.ts' is not a module.
  2. Rollup不知道如何正确处理js文件。

1 个答案:

答案 0 :(得分:1)

您正在尝试将文件作为模块加载。而不是直接指定JS文件,您应该让编译器知道.d.ts文件(例如,通过tsconfig.json或直接通过import),然后再简单地导入模块。

import '../vendor/verovio';
import * as verovio from 'verovio';

export default class DummyClass {
  constructor() {
    let foo: any = new verovio.toolkit()
  }
}

我在https://github.com/sonovice/mwe-ts-verovio-import/pull/1向您发送了一个提取请求,它执行了此操作,并且还根据供应商库的文档更新了类型。我也编辑了汇总配置以复制供应商库,尽管这不是理想的选择,因为您的lib不需要()供应商库。最好将其指定为依赖项,并让模块加载器处理require()。