如何使用Rollup在TypeScript中声明ES6和CommonJS导出?

时间:2017-12-03 20:30:50

标签: typescript visual-studio-code commonjs es6-modules

TL; DR :如何将我的声明文件声明Mymodule在导入为ES6模块时是default导出,但它是module.exports导入为commonjs时的对象?

我正在使用Rollup捆绑我的模块,以便可以将其作为commonjs和ES6模块导入。

// rollup.config.js
import ts from "rollup-plugin-typescript2";

export default {
  input: "src/index.ts",
  output: [
    {
      file: "dist/bundle.js",
      format: "cjs"
    },
    {
      file: "dist/bundle.es.js",
      format: "es"
    }
  ],
  plugins: [ts({ clean: true })]
};

并在我的package.json中:

 // package.json
 { ...
  "main": "dist/bundle.js",
  "module": "dist/bundle.es.js",
 ... }

这是我的模块本身:

// src/index.ts
class MyModule {...}
export default MyModule;

现在,我可以通过requireimport成功导入此模块:

// otherFile.js
import MyModule from 'MyModule'; // works as expected

const MyModule = require('MyModule'); // also works as expected

然而,虽然导入我的模块的两种方式都按预期工作,但 Intellisense 仅在我import模块,ES6样式时才有效。我假设这是因为声明文件只显示export default MyModule,因此VS Code认为MyModule类出现在require('MyModule').default,即使它实际上位于require('MyModule')

TL; DR:如何将我的声明文件声明Mymodule作为ES6模块导入时默认导出,但导入为commonjs时它是module.exports对象?

0 个答案:

没有答案