如何使用vite将esm构建为commonjs而不排除stream和path等节点模块?

rad*_*orz 5 node.js vite

我想使用 vite 将我的 esm js 打包到 commonjs,但它会清除节点模块。\nvite.config.js

\n
import { defineConfig } from \'vite\';\n\nconst config = defineConfig({\n  envDir: process.cwd(),\n  build: {\n    lib: {\n      entry: \'index.js\',\n      formats: [\'cjs\']\n    },\n    rollupOptions: {\n      output: {\n        entryFileNames: \'[name].cjs\'\n      }\n    },\n    emptyOutDir: true\n  }\n});\n\nexport default config;\n
Run Code Online (Sandbox Code Playgroud)\n

我的示例index.js

\n
import Stream from \'node:stream\';\nconsole.log(`\xe2\x9c\xa8`, `Stream`, Stream);\n
Run Code Online (Sandbox Code Playgroud)\n

构建后,流将是一个空对象。

\n

如何防止节点模块被清理?

\n

red*_*ft5 0

我遇到了类似的问题并通过指定解决了它:

build: { ssr: true }
Run Code Online (Sandbox Code Playgroud)

然后为了消除警告,您还应该指定:

rollupOptions: {
  input: 'index.js'
}
Run Code Online (Sandbox Code Playgroud)