import package version into page using Sveltekit

JavaScriptSvelte

11/14/2022, 9:36:12 AM

by Leo Voon

First method

Make sure the package.json path is correct. If you don’t like Typescript warns you, use the second method.

// App.svelte

<script>
import {version} from './package.json'
</script>

<footer> {version} </footer>

Second method

If you do this. You will get error that $env/static/private is not allowed to be imported into client-side code.

// App.svelte

<script>
import { npm_package_version } from '$env/static/private'
</script>

<footer> { npm_package_version } </footer>

Well, you can load it in +layout.server.js / +page.server.js and pass to the client as PageServerData or LayoutServerData


// +page.server.ts

import { npm_package_version } from '$env/static/private';

export const load: PageServerLoad = async () => {
	return {
		npm_package_version
	};
};
// App.svelte

<script>
export let data: PageServerData;
</script>

<footer> {data.npm_package_version} </footer>

Third method

Also there is a Vite way to get this working.

Make a .env file. Create an environment variable with VITE_ prefix. Put the value of it to $npm_package_version.

// .env

VITE_MY_VERSION=$npm_package_version

Now you can access directly into the page as follows

// App.svelte

<footer> {import.meta.env.VITE_MY_VERSION} </footer>

Weeeee. ✨