如何向 SvelteKit/Vite 应用程序添加版本号?
How do I add a version number to a SvelteKit/Vite app?
我正在尝试在我的 SvelteKit 应用程序中创建一个系统,它会在特定页面上向您显示有关当前应用程序版本的信息(最好是 Git 提交哈希和描述)。我尝试在构建时使用 Vite's define feature 来执行此操作,但它似乎不起作用。我该如何添加这样的内容?
这是我尝试做的一个例子:
在svelte.config.js
中查看配置
vite: () => ({
define: {
'__APP_VERSION__': JSON.stringify('testfornow')
}
})
index.svelte:
<script lang="ts">
const version: string = __APP_VERSION__;
</script>
<p>Current App version: {version}</p>
我的 static
目录中有一个空白文件 version.txt
。然后我在我的打包脚本中使用类似的东西。
git describe --tags 2> /dev/null || git rev-parse --short HEAD > build/assets/version.txt
这会尝试查找标签(如果有)或仅输出最新的 commitId。在我的应用程序中,我获取 /version.txt
并在适当的地方显示其内容。
这就是我成功实现它的方法:
- 按照 SvelteKit 常见问题解答中的说明获取 package.json 数据,并将其作为常量加载到 Vite 配置中:
// svelte.config.js
import { readFileSync } from 'fs';
import { fileURLToPath } from 'url';
const file = fileURLToPath(new URL('package.json', import.meta.url));
const json = readFileSync(file, 'utf8');
const pkg = JSON.parse(json);
const config = {
kit: {
// ...
vite: {
define: {
'__APP_VERSION__': JSON.stringify(pkg.version),
}
},
},
// ...
};
- 在任何 svelte 文件中使用该变量:
<h2>Version: {__APP_VERSION__}</h2>
与您的示例非常相似,希望对您有所帮助!
我正在尝试在我的 SvelteKit 应用程序中创建一个系统,它会在特定页面上向您显示有关当前应用程序版本的信息(最好是 Git 提交哈希和描述)。我尝试在构建时使用 Vite's define feature 来执行此操作,但它似乎不起作用。我该如何添加这样的内容?
这是我尝试做的一个例子:
在svelte.config.js
中查看配置vite: () => ({
define: {
'__APP_VERSION__': JSON.stringify('testfornow')
}
})
index.svelte:
<script lang="ts">
const version: string = __APP_VERSION__;
</script>
<p>Current App version: {version}</p>
我的 static
目录中有一个空白文件 version.txt
。然后我在我的打包脚本中使用类似的东西。
git describe --tags 2> /dev/null || git rev-parse --short HEAD > build/assets/version.txt
这会尝试查找标签(如果有)或仅输出最新的 commitId。在我的应用程序中,我获取 /version.txt
并在适当的地方显示其内容。
这就是我成功实现它的方法:
- 按照 SvelteKit 常见问题解答中的说明获取 package.json 数据,并将其作为常量加载到 Vite 配置中:
// svelte.config.js
import { readFileSync } from 'fs';
import { fileURLToPath } from 'url';
const file = fileURLToPath(new URL('package.json', import.meta.url));
const json = readFileSync(file, 'utf8');
const pkg = JSON.parse(json);
const config = {
kit: {
// ...
vite: {
define: {
'__APP_VERSION__': JSON.stringify(pkg.version),
}
},
},
// ...
};
- 在任何 svelte 文件中使用该变量:
<h2>Version: {__APP_VERSION__}</h2>
与您的示例非常相似,希望对您有所帮助!