我正在使用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文件做这些呢?
1条答案
按热度按时间xzlaal3s1#
应该可以。我刚试着用你的
vite.config.ts
、单行index.html
、dev.html
和test.ts
文件,以及安装的vite
、vite-plugin-solid
和solid-js
创建一个新的存储库。最后我得到了一个../htdocs/assets/test.js
文件。您可能还对 checkout Vitest感兴趣,这使得类似这样的测试更容易进行,并且不会意外地在您部署的htdocs中结束。