我正在使用TypeScript和Rollup编写Bluetooth library for Node.js。我想使用户能够通过以下方式导入我的库组件
import Sblendid from "@sblendid/sblendid";
import Sblendid, { Peripheral } from "@sblendid/sblendid";
const Sblendid = require("@sblendid/sblendid");
const { Peripheral } = require("@sblendid/sblendid");
我的项目结构如下所示:
root
∟ rollup.config.ts
∟ src
∟ index.ts
∟ sblendid.ts
∟ peripheral.ts
而相应的代码是这样的:
index.ts
export {
default,
} from "./sblendid";
export {
default as Peripheral,
} from "./peripheral";
sblendid.ts
export default class Sblendid {}
peripheral.ts
export default class Peripheral {}
我将所有内容与汇总捆绑在一起,而我的整个配置是这样的:
import typescript from "typescript";
import commonjs from "rollup-plugin-commonjs";
import resolve from "rollup-plugin-node-resolve";
import typescriptPlugin from "rollup-plugin-typescript2";
import autoExternal from "rollup-plugin-auto-external";
import { terser } from "rollup-plugin-terser";
import pkg from "./package.json";
export default {
input: "src/index.ts",
output: [
{
file: pkg.main,
format: "cjs",
sourcemap: true
},
{
file: pkg.module,
format: "es",
sourcemap: true
}
],
plugins: [
autoExternal(),
resolve({ preferBuiltins: true }),
commonjs(),
typescriptPlugin({ typescript, objectHashIgnoreUnknownHack: true }),
terser()
]
};
您可以在此处找到完整的代码
https://github.com/LukasBombach/sblendid/tree/master/packages/sblendid
现在,此设置不起作用。汇总告诉我
没错这
const Sblendid = require("@sblendid/sblendid");
根本行不通。我要做的是:
const Sblendid = require("@sblendid/sblendid").default;
我可以通过而不是混合命名的广告默认导出来解决此问题,但是,但是我失去了执行此操作的能力:
import Sblendid, { Peripheral } from "@sblendid/sblendid";
所以我想知道。有没有办法,也许使用多个捆绑包,我可以实现让用户能够同时执行以下两项操作:
// This
import Sblendid from "@sblendid/sblendid";
import Sblendid, { Peripheral } from "@sblendid/sblendid";
// And this
const Sblendid = require("@sblendid/sblendid");
const { Peripheral } = require("@sblendid/sblendid");
最佳答案
如果您仅针对nodejs环境,则可以这样导出(index.ts)
import Sblendid from "./sblendid";
import Peripheral from "./peripheral";
Sblendid.Peripheral = Peripheral;
export default Sblendid;
关于javascript - 将默认导出和命名导出与汇总混合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58246998/