【发布时间】:2021-11-20 23:35:06
【问题描述】:
我正在编写一个导出对象的 TS 库,如下所示:
export const MyLibName: SDKExport = { ... }
这个库将在 npm 上分发,我希望其他人能够导入它,而不管他们的设置如何,即它应该能够以下列方式使用:
// ES6
import { MyLibName } from './myLib';
// CommonJS
const { MyLibName } = require('./myLib');
// Browser
<script src="https://cdn.jsdelivr.net/npm/myLib/dist/dist.min.js"></script>
<script console.log(MyLibName) </script>
浏览器部分被证明是最棘手的,因为它需要使用MyLibName 对象“污染”全局命名空间。我可以这样做,但我不清楚如何在使用 CommonJS/ES6 显式导入库时不污染全局命名空间。
这是我的 tsconfig.json:
{
"compilerOptions": {
"lib": ["ES2019"],
"module": "es6",
"target": "es5",
"moduleResolution": "node",
"noUnusedLocals": true,
"noUnusedParameters": true,
"sourceMap": true,
"outDir": "build",
"strict": true,
"noImplicitAny": true,
},
"include": ["./**/*.ts"],
"exclude": ["node_modules", ".vscode", "test"]
}
【问题讨论】:
标签: javascript typescript commonjs