我正在尝试将一个使用
type: "module"
的库发布到 npm。我使用的是 vite 的库模式,配置如下:
export default defineConfig({
css: {
postcss: {
plugins: [tailwindcss, autoprefixer, tailwindcss] as any,
},
},
build: {
lib: {
entry: resolve(__dirname, "src/index.ts"),
name: "lib_name",
fileName: "lib_name",
},
rollupOptions: {
output: [
{
dir: "dist/browser",
name: "global_name",
format: "iife",
plugins: [],
},
{
dir: "dist/esm",
format: "esm",
entryFileNames: "index.js",
sourcemap: true,
},
],
external: ["@uppy/core"],
},
},
plugins: [dts({ rollupTypes: true })] as any,
});
理想情况下,我什至不想捆绑到一个大文件中(但这是一个不同的主题 -
preserveModules
不是这里的解决方案)。
我的理解是,由于我的
dependencies
已在package.json
中明确说明,我不需要捆绑它们。然而,默认情况下,vite 捆绑所有内容,并且生成的 .esm.js
文件不包含 import
语句。
虽然这没什么大不了的,但似乎效率很低。消费者无论如何都需要安装所有依赖项 - 为什么代码有两次?
如何更改配置以便导入外部依赖项而不是捆绑外部依赖项?
我尝试过的事情
external
卷展选项作为函数 external: (id: string) => { return /^node_modules/.test(id)}
以及值 `["@uppy/core"]这对我有用
rollupOptions: {
external: (id) => !(path.isAbsolute(id) || id.startsWith(".")),