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;
现在,我可以通过require
和import
成功导入此模块:
// 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
对象?