rollupjs - 我在构建 sveltekit 项目时遇到错误
问题描述
我正在构建一个 sveltekit 项目。我所做的一件事是创建了一种自定义类型的文件,该文件在构建或运行开发服务器时转换为 *.svelte 文件。默认情况下,sveltekit 包含汇总扩展 rollup-plugin-dynamic-import-variables,它试图解析我的自定义文件(谁知道为什么?)并抛出“意外令牌”错误。我正在尝试将该扩展名配置为忽略我的自定义文件,但到目前为止没有成功。这是我尝试的 svelte.config.js 文件:
// @type {import('@sveltejs/kit').Config}
var config;
import adapter from '@sveltejs/adapter-static';
import dynamicImportVariables from 'rollup-plugin-dynamic-import-variables';
config = {
kit: {
// --- hydrate the <div id="svelte"> element in src/app.html
target: '#svelte',
adapter: adapter({
pages: 'build',
assets: 'build',
fallback: null
}),
vite: {
plugins: [
dynamicImportVariables({
warnOnError: true,
exclude: '**'
})
]
}
}
};
export default config;
老实说,我不会在任何地方使用动态导入,因此会接受完全禁用扩展作为解决方案。但是任何可以让它忽略我的自定义文件的东西也可以。
解决方案
更新: SvelteKit 1.0.0 支持启用从目录中排除文件的routes
配置src/routes
。config 值是一个函数,它接收文件路径作为参数,并返回true
以使用文件作为路由。
例如,以下配置从路由中routes
排除文件:*.starbucks
// sveltekit.config.js
⋮
const config = {
kit: {
⋮
routes: filepath => {
return ![
// exclude *.starbucks files
/\.starbucks$/,
// original default config
/(?:(?:^_|\/_)|(?:^\.|\/\.)(?!well-known))/,
].some(regex => regex.test(filepath))
},
},
}
原答案:
rollup-plugin-dynamic-import-variables
Vite 实际上包含了。要配置 Vite 的插件,请设置build.dynamicImportVarsOptions
属性:
// svelte.config.js
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
// hydrate the <div id="svelte"> element in src/app.html
target: "#svelte",
vite: {
build: {
dynamicImportVarsOptions: {
exclude: [/node_modules/, /\.starbucks$/],
},
},
},
},
}
export default config
但这并不能解决问题...
SvelteKit 处理下的所有文件,src/routes/
以便它们自动导入到输出应用程序(in .svelte-kit/build/app.js
)中,这将导致相同的错误。
选项 1:私有模块
您可以通过将文件设为私有模块来排除src/routes/*.starbucks
文件,该模块在文件名中有一个前导下划线:
src/routes/_home.starbucks
src/routes/_index.starbucks
src/routes/index.svelte
选项 2:将文件移到外部src/routes
或者,将这些*.starbucks
文件移出src/routes/
(例如,移入src/starbucks/
或src/lib/
):
src/routes/index.svelte
src/starbucks/home.starbucks
src/starbucks/index.starbucks
src/lib/home.starbucks
src/lib/index.starbucks
推荐阅读
- .net-core - csproj
CopyToOutputDirectory="PreserveNewest" 无效 - regex - 需要帮助以了解 1 有效而 1 无效的类似 RegExp 用法之间的区别
- python - 使用 Python 的 aiohttp 发出 Web 请求,出现浏览器过时错误?
- java - JavaFX MenuButton 仅作为具有 MenuButton 功能的图形或图标
- animation - FadeTransition() 小部件在颤动中只动画一次?
- ipfs - 收到的 IPFS 内容是否总是加密的?
- git - How to push everything to GitHub except one file
- git - 紧急情况 - 我刚刚将 --hard 重置为我的初始提交,有没有办法恢复我之前的提交,或者整个项目都丢失了?
- python - Difference between is and "=="
- gnuplot - Histogram Gnuplot mixing Clustered/Stacked