@hexah/create-skin 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -9
- package/index.js +5 -4
- package/package.json +1 -1
- package/template/README.md +28 -17
- package/template/rspack.config.js +6 -6
package/README.md
CHANGED
|
@@ -18,17 +18,16 @@ Następnie podłącz remote do hosta na teście (instrukcja w wygenerowanym `REA
|
|
|
18
18
|
|
|
19
19
|
## Co generuje
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Gotowy projekt skórki:
|
|
22
22
|
|
|
23
23
|
- `rspack.config.js` — `ModuleFederationPlugin` wystawiający `./ReportScreen`, paczki
|
|
24
|
-
współdzielone z hostem (`import: false`), dev server na `:3001`
|
|
25
|
-
- `src/ReportScreen.jsx` — przykładowy ekran na `@hexah/skin-sdk`.
|
|
26
|
-
- `package.json`, `.gitignore`, `README.md
|
|
24
|
+
współdzielone z hostem (`import: false`), dev server na `:3001` (CORS + `allowedHosts`).
|
|
25
|
+
- `src/ReportScreen.jsx` — przykładowy ekran zbudowany na `@hexah/skin-sdk`.
|
|
26
|
+
- `package.json`, `.gitignore`, `README.md` z instrukcją podłączenia do środowiska testowego.
|
|
27
27
|
|
|
28
|
-
Nazwa kontenera
|
|
28
|
+
Nazwa kontenera Module Federation jest automatycznie sanityzowana z nazwy katalogu do
|
|
29
|
+
poprawnego identyfikatora.
|
|
29
30
|
|
|
30
|
-
##
|
|
31
|
+
## Licencja
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
patrz `docs/skin-sdk/publishing.md`. Przed publikacją działa tylko z repo
|
|
34
|
-
(`node packages/create-hexah-skin/index.js <katalog>`). Pełne demo wymaga środowiska testowego.
|
|
33
|
+
MIT.
|
package/index.js
CHANGED
|
@@ -36,18 +36,19 @@ function main(argv) {
|
|
|
36
36
|
console.log("Dalej:");
|
|
37
37
|
console.log(` cd ${target}`);
|
|
38
38
|
console.log(" npm install");
|
|
39
|
-
console.log(" npm run dev # rspack serve z HMR (
|
|
39
|
+
console.log(" npm run dev # rspack serve z HMR (http://localhost:3001/remoteEntry.js)");
|
|
40
40
|
console.log("");
|
|
41
41
|
console.log("Podłączenie do hosta (środowisko testowe) — w konsoli przeglądarki:");
|
|
42
42
|
console.log(
|
|
43
43
|
` localStorage.setItem('hexah.skinRemote', JSON.stringify({ name: '${federationName}',`,
|
|
44
44
|
);
|
|
45
45
|
console.log(
|
|
46
|
-
" entry: '
|
|
46
|
+
" entry: 'http://localhost:3001/remoteEntry.js', template: 'sdkremote',",
|
|
47
47
|
);
|
|
48
48
|
console.log(" screens: { report: './ReportScreen' }, apiVersion: '0.2.0' }))");
|
|
49
|
-
console.log("
|
|
50
|
-
console.log("
|
|
49
|
+
console.log("Zdeployowany test (https) wymaga publicznego URL — odpal tunel:");
|
|
50
|
+
console.log(" npx cloudflared tunnel --url http://localhost:3001 # → https://<rand>.trycloudflare.com");
|
|
51
|
+
console.log("i użyj tego URL w entry + hexah.skinRemoteAllowedOrigins. Patrz README.");
|
|
51
52
|
console.log("Następnie w Ustawieniach Gry wybierz motyw „SDK Remote (zdalna skórka)\".");
|
|
52
53
|
return 0;
|
|
53
54
|
}
|
package/package.json
CHANGED
package/template/README.md
CHANGED
|
@@ -1,37 +1,47 @@
|
|
|
1
1
|
# __SKIN_NAME__
|
|
2
2
|
|
|
3
|
-
Skórka Hexah zbudowana jako **zdalny kontener Module Federation**.
|
|
4
|
-
aplikacji Hexah
|
|
3
|
+
Skórka Hexah zbudowana jako **zdalny kontener Module Federation**. Renderuje się w działającej
|
|
4
|
+
aplikacji Hexah na środowisku testowym — budujesz ją wyłącznie na publicznym SDK
|
|
5
|
+
`@hexah/skin-sdk`, bez dostępu do kodu gry.
|
|
5
6
|
|
|
6
7
|
## Start
|
|
7
8
|
|
|
8
9
|
```bash
|
|
9
10
|
npm install
|
|
10
|
-
npm run dev # rspack serve z HMR →
|
|
11
|
+
npm run dev # rspack serve z HMR → http://localhost:3001/remoteEntry.js
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
## Podłączenie do
|
|
14
|
+
## Podłączenie do środowiska testowego Hexah
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
Skórkę ładuje aplikacja działająca pod publicznym adresem (HTTPS). Przeglądarka **nie pozwala**
|
|
17
|
+
takiej stronie pobrać zasobu z `localhost` (Local/Private Network Access — `NS_BINDING_ABORTED`).
|
|
18
|
+
Dlatego wystaw swój dev server pod **publicznym URL przez tunel**:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm run dev # http://localhost:3001
|
|
22
|
+
npx cloudflared tunnel --url http://localhost:3001 # → https://<rand>.trycloudflare.com
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`<rand>.trycloudflare.com` to adres, który cloudflared wypisze w terminalu — skopiuj go.
|
|
26
|
+
Następnie w konsoli przeglądarki na środowisku testowym Hexah:
|
|
16
27
|
|
|
17
28
|
```js
|
|
29
|
+
localStorage.setItem('hexah.skinRemoteAllowedOrigins', JSON.stringify(['https://<rand>.trycloudflare.com']))
|
|
18
30
|
localStorage.setItem('hexah.skinRemote', JSON.stringify({
|
|
19
31
|
name: '__SKIN_FEDERATION_NAME__',
|
|
20
|
-
entry: 'https
|
|
32
|
+
entry: 'https://<rand>.trycloudflare.com/remoteEntry.js',
|
|
21
33
|
template: 'sdkremote',
|
|
22
34
|
screens: { report: './ReportScreen' },
|
|
23
35
|
apiVersion: '0.2.0',
|
|
24
36
|
}))
|
|
25
37
|
```
|
|
26
38
|
|
|
27
|
-
> **Pierwsze uruchomienie:** dev server jedzie po **HTTPS** z samopodpisanym certem (host na
|
|
28
|
-
> teście jest HTTPS — remote po HTTP byłby zablokowany jako mixed content / „dostęp do sieci
|
|
29
|
-
> lokalnej"). Wejdź **raz** na <https://localhost:3001/remoteEntry.js> i zaakceptuj wyjątek
|
|
30
|
-
> certyfikatu, dopiero potem odśwież `test.kf2.pl`.
|
|
31
|
-
|
|
32
39
|
Odśwież, w **Ustawieniach Gry** wybierz motyw **„SDK Remote (zdalna skórka)"** i wejdź na ekran
|
|
33
|
-
zgłoszeń — zobaczysz swój `ReportScreen` na realnych danych.
|
|
34
|
-
|
|
40
|
+
zgłoszeń — zobaczysz swój `ReportScreen` na realnych danych. HMR pokazuje zmiany w `src/` po
|
|
41
|
+
odświeżeniu (i ponownym pobraniu remote'a).
|
|
42
|
+
|
|
43
|
+
> Adres tunelu zmienia się po każdym restarcie cloudflared — wklej wtedy nowy URL w oba wpisy
|
|
44
|
+
> `localStorage`.
|
|
35
45
|
|
|
36
46
|
## Co możesz edytować
|
|
37
47
|
|
|
@@ -40,7 +50,8 @@ widoczne po odświeżeniu (rebuild remote'a).
|
|
|
40
50
|
|
|
41
51
|
## Zasady
|
|
42
52
|
|
|
43
|
-
- Importuj tylko z `@hexah/skin-sdk` — to publiczny kontrakt (stałe, typy, hooki, UI).
|
|
44
|
-
- Pakiety react
|
|
45
|
-
nie pakujesz ich,
|
|
46
|
-
-
|
|
53
|
+
- Importuj **tylko** z `@hexah/skin-sdk` — to publiczny kontrakt (stałe, typy, hooki, UI).
|
|
54
|
+
- Pakiety `react`/`jotai`/`@mui`/`@emotion`/`@hexah/skin-sdk` są współdzielone (`import: false`)
|
|
55
|
+
— nie pakujesz ich, dostajesz instancje z aplikacji-hosta.
|
|
56
|
+
- `apiVersion` musi być zgodna z hostem (ten sam major, minor ≤ host) — inaczej host odmówi
|
|
57
|
+
załadowania.
|
|
@@ -52,14 +52,14 @@ module.exports = {
|
|
|
52
52
|
},
|
|
53
53
|
}),
|
|
54
54
|
],
|
|
55
|
-
// Dev server po
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
// (
|
|
55
|
+
// Dev server po HTTP — najprostszy. Dwa działające tryby ładowania w hoście:
|
|
56
|
+
// • tunel (cloudflared/ngrok) wystawia to publicznie po HTTPS → działa na zdeployowanym teście,
|
|
57
|
+
// • lokalny host KF2 (http://localhost) ładuje remote po HTTP wprost.
|
|
58
|
+
// `allowedHosts: "all"` — tunel przekazuje nagłówek Host domeny publicznej; bez tego rspack
|
|
59
|
+
// odrzuca żądanie („Invalid Host header"). Nagłówki: CORS + Private Network Access.
|
|
60
60
|
devServer: {
|
|
61
61
|
port: 3001,
|
|
62
|
-
|
|
62
|
+
allowedHosts: "all",
|
|
63
63
|
headers: {
|
|
64
64
|
"Access-Control-Allow-Origin": "*",
|
|
65
65
|
"Access-Control-Allow-Private-Network": "true",
|