如何让 vite 忽略目录?

mik*_*ana 8 javascript typescript vite

service-worker我的项目的最顶层有一个目录,其中包含一个文件。

\n
$ ls service-worker/\nhelpers.ts  service-worker.ts\n
Run Code Online (Sandbox Code Playgroud)\n

我希望让vite 忽略这个目录,并研究了这个讨论(结果证明是一个不相关的原因)optimizationDeps.exclude()函数。

\n

我正在使用最小的vite.config.ts

\n
// https://vitejs.dev/config/\nimport { defineConfig } from "vite";\n\nexport default defineConfig({\n  optimizeDeps: {\n    exclude: ["service-worker/*"],\n  },\n});\n
Run Code Online (Sandbox Code Playgroud)\n

但 service-worker 总是被构建的:

\n
$ rm dist/service-worker.js; npx vite build; ls -la dist/service-worker.js\n\nvite v3.0.9 building for production...\n\xe2\x9c\x93 3 modules transformed.\ndist/index.html                 0.38 KiB\ndist/assets/index.891d93e6.js   0.69 KiB / gzip: 0.39 KiB\n-rw-r--r-- 1 mike mike 1544 Dec 12 19:46 dist/service-worker.js\n
Run Code Online (Sandbox Code Playgroud)\n

如何让 vite 忽略目录?

\n

小智 1

这不是您问题的确切答案,而是您可能实现所需结果的另一种方式:

您可以通过 rollup 选项防止模块最终出现在捆绑包中external。例如,如果我@fontsource/roboto-condensed在构建中使用的任何模块中有一个导入,我可以像这样排除对它的依赖:

build: {
  rollupOptions: {
    external: ['@fontsource/roboto-condensed'],
  },
},
Run Code Online (Sandbox Code Playgroud)

这是排除包依赖项以及对您自己的本地模块的依赖项的有效方法。文档: https: //rollupjs.org/configuration-options/#external