我有一个 SvelteKit 项目,想从命令行运行一些维护脚本。我知道如何使用节点运行脚本。维护脚本将引用 SvelteKit 的
$lib
文件夹中的模块,然后导入其他模块和 $env
。
如何以 SvelteKit 框架特定功能导入(如 $lib 和 $env)在脚本代码中可用的方式运行脚本?
例如
node src/scripts/myscript.js # How can import $lib here
我会这样进行:
1 将脚本放在 src/scripts 等目录中。例如,src/scripts/myscript.js。
2
npm install --save-dev esbuild vite
3
import { defineConfig } from 'vite';
import { sveltekit } from '@sveltejs/kit/vite';
export default defineConfig({
plugins: [sveltekit()],
build: {
outDir: './out',
rollupOptions: {
input: './src/scripts/myscript.js'
}
}
});
4 此配置可确保 Vite 使用 SvelteKit 插件来解析模块路径和其他配置,就像在 SvelteKit 应用程序中一样。
c.如有必要,修改您的脚本以使用异步导入: 根据您从 $lib 或其他 SvelteKit 托管目录导入的内容,您可能需要调整导入的处理方式:
5
// Example using dynamic import
(async () => {
const { myFunction } = await import('$lib/myLibModule');
myFunction();
})();
6 在package.json中添加脚本: 在 package.json 中添加命令以通过 Vite 运行脚本:
"scripts": {
"run-script": "vite build --config vite.config.script.js && node ./out/myscript.js"
}
7
npm run run-script
此设置可确保您的 Node.js 脚本可以使用所有 SvelteKit 特定的别名和功能,除了那些严格特定于浏览器的别名和功能(例如导航器或 DOM API)。
限制和注意事项: 环境变量:确保执行脚本时,$env 使用的环境变量在 Node.js 运行时环境中可用。 浏览器特定的 API:显然,依赖于浏览器上下文的 API 在此设置中不起作用,应该被模拟或避免。