create-lesa-app
v0.0.11
Published
Create a new project from the lesa Expo SDK 57 template
Readme
create-lesa-app
Launcher for the lesa Expo template. One slug in — schemes, bundle ids, Android packages and a first commit out.
⚗️ Everything here is experimental. Built for me (LESA).
[!WARNING] This is mine. It is shaped around my taste and my workflow, and every choice in it is experimental. No stability, no backwards compatibility, no support — the structure changes without notice.
Read it, borrow from it. But do not ship it as-is — verify it yourself.
pnpm install && npm link
create-lesa-app my-new-app ┌ create-lesa-app
│
│ ◇ App name
│ lesa-app
│
│ ◇ Display name
│ Lesa App
│
│ ◆ Apple Team ID
│ ╭────────────────────────────────────────────────╮
│ │ › ▌ │
│ ╰────────────────────────────────────────────────╯
│ optional · iOS only · Enter to skip
│
└ Enter skip or continue · Esc cancel[!NOTE] The template is fetched from
LESANF/react-native-template-lesaat a pinned tag, so the same command gives the same project tomorrow. A local copy wins when present — lookup order is--template <path>→$LESA_TEMPLATE_DIR→ a siblinglesa-expo-template→ GitHub.
Derived from one slug
| field | development | preview | production |
| ---------------------- | ---------------------------- | --------------------- | ------------- |
| name · slug | <slug> — every environment | | |
| scheme | <slug>-dev | <slug>-preview | <slug> |
| bundleId · package | com.<slug*>.development | com.<slug*>.preview | com.<slug*> |
| version | 0.0.1 build 1 | | |
<slug*> drops hyphens. Android package names allow only letters, digits and
underscores between periods, so lesa-app becomes com.lesaapp — URL schemes
do allow hyphens and keep them.
A name that is not lowercase ASCII becomes the display name, and a slug is asked
separately. It is never romanized: that value ends up as the Xcode project name,
the scheme and PRODUCT_NAME, and transliteration loses too much.
Not asked
API and OTA urls, universal-link hosts, Android signing, icons, firebase/
files. None are knowable at creation time. Every spot the project has to fill in
is marked TODO(앱), and the closing screen prints the grep for it.
Notes
- Stage new template files. Copying is driven by
git ls-files, so build output and local state are excluded by definition — and a file you just created is not copied until it isgit added. npm linkfollows your Node version. Re-run it after switching with nvm, or skip linking and runpnpm start ../my-new-appfrom this repo.- The prompt is testable without a TTY.
useInputneeds one, so the step machine lives insrc/flow.tsinstead.pnpm testdrives the whole flow. - Failures clean up. A failed run deletes the directory it created.
Ctrl+Cleaves a partial tree alone rather than removing it silently.
Commands
| | |
| ----------------------- | --------------------------------- |
| create-lesa-app <dir> | create a project |
| --template <path> | point at a template explicitly |
| --help · --version | usage · version |
| pnpm test | step machine and derivation tests |
| pnpm type-check | tsc --noEmit |
| pnpm bake-intro | re-bake the ASCII wordmark frames |
License
MIT — use it however you like.
