Programowanie · Konwersja i formaty
npm-publishing
/npm-publishing
Publikuje biblioteki OCaml do npm przez js_of_ocaml i wasm_of_ocaml, z podziałem na gałęzie dla przeglądarki i WASM.
Dla kogo
- Autor
- avsm ↗
- Repozytorium
- ocaml-claude-marketplace ↗
- Licencja
- ISC
- Ostatnia zmiana repozytorium
- 02.09.2026
Ocena i bezpieczeństwo
100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
- Pliki w paczce
- 3
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 1
Przestarzałość
Brak sygnałów. Repozytorium zmienione 02.09.2026, bez odwołań do wycofanych modeli i API.
Licencja
ISC, otwarta.
Co robi i kiedy
Publikuje biblioteki OCaml do npm przez js_of_ocaml i wasm_of_ocaml, z podziałem na gałęzie dla przeglądarki i WASM.
Oryginalny opis (EN)
Publishing OCaml to npm via js_of_ocaml and wasm_of_ocaml. Use when discussing browser targets, JavaScript compilation, WASM output, npm packages, or the two-branch workflow.
Jak działa
- When to Use This Skill
- Branch Structure
- Dune Build Rules
- Creating the NPM Branch
- NPM Branch Files
- Workflow Summary
- README for npm
Sekcje z nagłówków SKILL.md, w oryginale · 150 linii, 391 słów
Podgląd SKILL.md
---
name: npm-publishing
description: Publishing OCaml to npm via js_of_ocaml and wasm_of_ocaml. Use when discussing browser targets, JavaScript compilation, WASM output, npm packages, or the two-branch workflow.
---
# OCaml to NPM Publishing
## When to Use This Skill
Invoke this skill when:
- Setting up npm publishing for OCaml projects
- Configuring js_of_ocaml or wasm_of_ocaml
- Discussing browser targets for OCaml
- Creating the npm branch workflow
## Branch Structure
```
main branch - OCaml source code, dune build files, opam packages
npm branch - Built JavaScript/WASM assets, package.json, README for npm
```
The `npm` branch is an orphan branch with no shared history.
## Dune Build Rules
### Library with Browser Bindings
In `lib/js/dune`:
```dune
; Library compiled to bytecode (required for js_of_ocaml)
(library
(name mylib_js)
(public_name mylib-js)
(libraries mylib brr)
(modes byte)
(modules mylib_js))
; Executable compiled to both JS and WASM
(executable
(name mylib_js_main)
(libraries mylib_js)
(js_of_ocaml)
(modes js wasm)
(modules mylib_js_main))
; Friendly filename for JS
(rule
(targets mylib.js)
(deps mylib_js_main.bc.js)
(action (copy %{deps} %{targets})))
; Friendly filename for WASM
(rule
(targets mylib.wasm.js)
(deps mylib_js_main.bc.wasm.js)
(action (copy %{deps} %{targets})))
; Install web assets
(install
(package mylib-js)
(section share)
(files
mylib.js
mylib.wasm.js
(glob_files_rec (mylib_js_main.bc.wasm.assets/* with_prefix mylib_js_main.bc.wasm.assets))))
```
### dune-project Package
```dune
(package
(name mylib-js)
(synopsis "Browser library via js_of_ocaml/wasm_of_ocaml")
(depends
(ocaml (>= 5.1.0))
(mylib (= :version))
(js_of_ocaml (>= 5.0))
(js_of_ocaml-ppx (>= 5.0))
(wasm_of_ocaml-compiler (>= 5.0))
(brr (>= 0.0.6))))
```
## Creating the NPM Branch
```bash
# Create orphan branch
git switch --orphan npm
# Add npm-specific files
git add package.json README.md LICENSE release.sh .gitignore
git commit -m "Initial npm package setup"
# Switch back
git checkout main
```
## NPM Branch Files
See `templates/` for:
- `package.json.template`
- `release.sh.template`
### package.json
```json
{
"name": "mylib-jsoo",
"version": "1.0.0",
"description": "Description here",
"browser": "mylib.js",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/user/repo.git#npm"
},
"files": [
"mylib.js",
"mylib.wasm.js",
"mylib_js_main.bc.wasm.assets/",
"README.md",
"LICENSE"
]
}
```
Key points:
- Use `"browser"` not `"main"` (js_of_ocaml is browser-only)
- Point repository URL to `#npm` branch
- Include WASM assets directory
### release.sh
Script to copy built assets from main branch to npm branch.
## Workflow Summary
1. Develop on `main` branch (OCaml source)
2. Build: `dune build @install`
3. Switch to `npm` branch
4. Run `./release.sh` to copy built assets
5. Update version in `package.json`
6. Commit and `npm publish`
## README for npm
Focus on browser usage:
1. Clear browser-only notice
2. Installation via npm
3. Browser usage with `<script>` tags
4. Both JS and WASM examples
5. Browser compatibility requirements
Pliki w paczce (3)
- SKILL.md 3 KB
- templates/package.json.template 1 KB
- templates/release.sh.template 1 KB
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · avsm/ocaml-claude-marketplace | 100 | ISC |
| dxos/dxos | 100 | Apache-2.0 |
| Amey-Thakur/AI-SKILLS | 90 | MIT |
Migawka bazy z 28.10.2026 · wersja paczki 0311bf259443 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100secure-npm-package
Przygotowuje i utwardza wydanie pakietu npm z Trusted lub Staged Publishing, także dla pakietów z błędem E404 po pierwszej publikacji. - 100npm
Pomaga zarządzać zależnościami JavaScript i Node.js: package.json, pliki lock, workspaces w monorepo, skrypty, audyty bezpieczeństwa i publikowanie pakietów. - 90publishing-packages
Opisuje konwencje publikowania pakietów npm z tego repozytorium, w tym kiedy pull request wymaga changesetu i jak go napisać. - 100project-setup
Opisuje standardy plików metadanych projektów OCaml: inicjalizację biblioteki lub modułu, wydanie przez opam, CI oraz wymagane pliki .mli i .ocamlformat. - 100publish-npm-package
Pokazuje, jak publikować pakiety do npm przez GitHub Actions, z trusted publishing, provenance i semantic-release. - 100testing
Opisuje strategie testów bibliotek OCaml: strukturę testów, alcotest, mocki eio i rozwój oparty na testach.