Skip to content

Commit 409bc1d

Browse files
ssynowieckguzek
andauthored
feat(frontend): local package testing docs (#126)
Co-authored-by: Konrad Guzek <konrad@guzek.uk>
1 parent 208aed5 commit 409bc1d

1 file changed

Lines changed: 142 additions & 0 deletions

File tree

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
---
2+
title: Testowanie lokalnie
3+
tableOfContents:
4+
minHeadingLevel: 2
5+
maxHeadingLevel: 4
6+
description: Przewodnik do lokalnego testowania paczki
7+
---
8+
9+
import {
10+
Aside,
11+
FileTree,
12+
LinkCard,
13+
TabItem,
14+
Tabs,
15+
Steps,
16+
} from "@astrojs/starlight/components";
17+
18+
export const STEP_1_TITLE =
19+
"Lokalne testowanie paczki należy rozpocząć od jej zbudowania.";
20+
export const STEP_2_TITLE =
21+
"Następnie należy ją dodać do globalnego katalogu pakietów.";
22+
export const STEP_3_TITLE =
23+
"Na koniec należy powiązać paczkę testowaną w katalogu projektu testowanego.";
24+
export const STEP_5_TITLE =
25+
"W celu pogłębiania swojej wiedzy na temat linkowania pakietów, warto zapoznać się z oficjalną dokumentacją menedżera pakietów.";
26+
27+
Przykładowa struktura folderów do testowania:
28+
29+
<FileTree>
30+
31+
- /
32+
- lib-web-solvro-config/
33+
- package.json
34+
- ...
35+
- my-new-next-project/
36+
- next.config.ts
37+
- package.json
38+
- ...
39+
40+
</FileTree>
41+
42+
W tej sytuacji `lib-web-solvro-config` jest katalogiem zawierającym projekt paczki, którą chcemy testować, zaś `my-new-next-project` jest katalogiem projektu, w którym chcemy testować paczkę.
43+
44+
:::note
45+
Należy wybrać odpowiedni menedżer pakietów do projektu, **w którym będziesz testować paczkę**, a nie do samego projektu paczki.
46+
:::
47+
48+
<Tabs>
49+
<TabItem label="npm">
50+
<Steps>
51+
1. {STEP_1_TITLE}
52+
53+
```shell
54+
npm run build # przykładowo, zależy od projektu pakietu
55+
```
56+
57+
2. {STEP_2_TITLE}
58+
59+
```shell
60+
npm link
61+
```
62+
63+
3. {STEP_3_TITLE}
64+
65+
```shell
66+
cd ../my-new-next-project
67+
npm link @solvro/config # npm teraz wie, że pakiet jest dostępny lokalnie
68+
```
69+
70+
4. Po powiązaniu pakietu, utworzone zostały linki symboliczne do lokalnej paczki, które umożliwiają nam lokalne importowanie i uruchamianie komend paczek.
71+
72+
```shell
73+
npx @solvro/config # uruchomiona zostaje lokalna wersja paczki
74+
```
75+
76+
5. {STEP_5_TITLE}
77+
78+
<LinkCard title="Linkowanie pakietów w npm" href="https://docs.npmjs.com/cli/commands/npm-link" />
79+
</Steps>
80+
81+
</TabItem>
82+
<TabItem label="pnpm">
83+
<Steps>
84+
1. {STEP_1_TITLE}
85+
86+
<Aside type="caution">
87+
Tutaj używamy menedżera pakietów skonfigurowanego w projekcie paczki, a nie w projekcie, w którym będziemy testować paczkę. W tym przykładzie w `lib-web-solvro-config` skonfigurowany jest `npm`, więc dla tego kroku nie używamy komendy `pnpm`.
88+
</Aside>
89+
90+
```shell
91+
npm run build # przykładowo, zależy od projektu pakietu
92+
```
93+
94+
2. {STEP_2_TITLE}
95+
96+
```shell
97+
pnpm add -g .
98+
```
99+
:::note
100+
Gdy projekt pakietu ma skonfigurowany menedżer pakietów inny niż `pnpm`, to w niektórych środowiskach, np. przy użyciu `volta`, komenda `pnpm` może być zablokowana w katalogu pakietu. Wówczas należy tę komendę wykonać z innego katalogu i wskazać ścieżkę do projektu.
101+
:::
102+
```shell
103+
cd ../my-new-next-project
104+
pnpm add -g ../lib-web-solvro-config
105+
```
106+
107+
3. Po powiązaniu pakietu, utworzone zostały linki symboliczne do **binarek deklarowanych w lokalnej paczce**, które umożliwiają nam lokalne uruchamianie komend paczek.
108+
109+
```shell
110+
pnpm exec config # uruchomiona zostaje lokalna wersja paczki
111+
```
112+
113+
:::tip
114+
Gdy nazwa pakietu składa się również z namespace-u, `pnpm` linkuje tylko nazwę bazową paczki. Dlatego w powyższym przykładzie używamy `config` zamiast `@solvro/config`.
115+
:::
116+
117+
:::caution
118+
Tą metodą linkowane są tylko komendy wykonywalne wystawiane przez pakiet, a nie sam pakiet. Oznacza to, że importy z tej paczki w kodzie **nie będą odnosiły się** do lokalnej wersji. Jeśli tego potrzebujesz, to przejdź do kolejnego kroku.
119+
:::
120+
121+
5. Żeby móc importować lokalną paczkę w kodzie (lub np. w konfiguracji `eslint` albo innego narzędzia), można opcjonalnie powiązać paczkę w katalogu projektu testowanego.
122+
```shell
123+
pnpm link ../lib-web-solvro-config
124+
```
125+
:::danger
126+
Tą metodą zajdą zmiany w plikach `package.json`, `pnpm-lock.yaml` i `pnpm-workspace.yaml`, które **nie powinny być commitowane**. Ze względu na to, ten sposób linkowania pakietów **nie jest polecany** i powinien tylko być stosowany, gdy metoda z poprzedniego kroku nie spełnia naszych potrzeb.
127+
:::
128+
Teraz możemy importować lokalną paczkę w kodzie, np. w konfiguracji `eslint`:
129+
```javascript
130+
// eslint.config.mjs
131+
import { solvro } from "@solvro/config/eslint";
132+
export default solvro(); // to jest lokalna wersja paczki
133+
```
134+
135+
5. {STEP_5_TITLE}
136+
137+
<LinkCard title="Linkowanie pakietów w pnpm" href="https://pnpm.io/cli/link" />
138+
139+
</Steps>
140+
141+
</TabItem>
142+
</Tabs>

0 commit comments

Comments
 (0)