typescript 使用Vite生成独立的js工件作为另一个构建的副作用

c86crjj0  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(138)

我正在使用Vite(vite@3.1.8)为使用SolidJS(solid-js@1.6.0)的SPA“站点”构建Typescript工件。
这是我vite.config.ts

import { defineConfig, resolveBaseUrl } from 'vite'
import solidPlugin from 'vite-plugin-solid'

export default defineConfig({
  plugins: [solidPlugin()],
  server: {
    port: 3000,
  },
  build: {
    target: 'esnext',
    outDir: '../htdocs',
    rollupOptions: {
      input: {
        index: "./index.html",
        dev: "./dev.html",
        test: "./test.ts",
      },
      output: {
        entryFileNames: `assets/[name].js`,
        chunkFileNames: `assets/[name].js`,
        assetFileNames: `assets/[name].[ext]`
      }
    },
  },
});

目前,它实际上构建了2个html文件(index.html和dev.html)和运行这些文件所需的工件。
我想让transpiler也踢出test.js,这样我就可以运行它,在部署到生产之前做一些健全性检查。
我希望执行vite build,然后运行node ../htdocs/assets/test.js(或类似的操作),如果我的任何健全性测试失败,则让它阻止最终部署。
但是,当我尝试这样做时,在运行test.js时收到一个错误,抱怨我使用了import语句。
Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
在package.json中将我的包类型设置为module并不能解决这个问题。将测试文件更改为test.mjs也不能解决这个问题。我真的不确定下一步该怎么做。
我真正希望它能做的是把整个“导入”作为transpiling的一部分,并创建一个独立的test.js,它只运行。看起来这就是它在构建index.html和dev.html时所做的,为什么它不为我的ts文件做这些呢?

xzlaal3s

xzlaal3s1#

应该可以。我刚试着用你的vite.config.ts、单行index.htmldev.htmltest.ts文件,以及安装的vitevite-plugin-solidsolid-js创建一个新的存储库。最后我得到了一个../htdocs/assets/test.js文件。
您可能还对 checkout Vitest感兴趣,这使得类似这样的测试更容易进行,并且不会意外地在您部署的htdocs中结束。

相关问题