Skip to content

Commit 902bf11

Browse files
author
Rich Harris
committed
document lib
1 parent c3acea9 commit 902bf11

File tree

8 files changed

+65
-0
lines changed

8 files changed

+65
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title: The $lib alias
3+
---
4+
5+
Because SvelteKit uses directory-based routing, it's easy to place modules and components alongside the routes that use them. A good rule of thumb is 'put code close to where it's used'.
6+
7+
Sometimes, code is used in multiple places. When this happens, it's useful to have a place to put them that can be access by all routes without needing to prefix imports with `../../../../`. In SvelteKit, that place is the `src/lib` directory. Anything inside this directory can be accessed by any module in `src` via the `$lib` alias.
8+
9+
Both `+page.svelte` files in this exercise import `src/lib/message.js`. But if you navigate to `/a/deeply/nested/route`, the app breaks, because we got the prefix wrong. Update it to use `$lib/message.js` instead:
10+
11+
```svelte
12+
/// file: src/routes/a/deeply/nested/route/+page.svelte
13+
<script>
14+
import { message } from +++'$lib/message.js'+++;
15+
</script>
16+
17+
<h1>a deeply nested route</h1>
18+
<p>{message}</p>
19+
```
20+
21+
Do the same for `src/routes/+page.svelte`:
22+
23+
```svelte
24+
/// file: src/routes/+page.svelte
25+
<script>
26+
import { message } from +++'$lib/message.js'+++;
27+
</script>
28+
29+
<h1>home</h1>
30+
<p>{message}</p>
31+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const message = 'hello from $lib/message';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<nav>
2+
<a href="/">home</a>
3+
<a href="/a/deeply/nested/route">a deeply nested route</a>
4+
</nav>
5+
6+
<slot />
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
import { message } from '../lib/message.js';
3+
</script>
4+
5+
<h1>home</h1>
6+
<p>{message}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
import { message } from '../../../../../../lib/message.js';
3+
</script>
4+
5+
<h1>a deeply nested route</h1>
6+
<p>{message}</p>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
import { message } from '$lib/message.js';
3+
</script>
4+
5+
<h1>home</h1>
6+
<p>{message}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script>
2+
import { message } from '$lib/message.js';
3+
</script>
4+
5+
<h1>a deeply nested route</h1>
6+
<p>{message}</p>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Shared modules"
3+
}

0 commit comments

Comments
 (0)