create-mantlejs
Project initializer for Mantle JS — scaffold a new Mantle application with a single npm create command.
Installation
Section titled “Installation”No installation needed. Run directly with your package manager:
npm create mantlejs@latest my-app# ornpx create-mantlejs my-appConcepts
Section titled “Concepts”npm create convention
Section titled “npm create convention”create-mantlejs follows the npm initializer convention. Running npm create mantlejs my-app resolves to create-mantlejs on the npm registry and invokes the create-mantlejs bin. This means users never need to install the package globally.
create-mantlejs is a thin wrapper around @mantlejs/cli’s newProject() — see that package’s
README for the full scaffold surface (database/auth/CORS/Redis options, what gets generated).
Quick start
Section titled “Quick start”# Scaffold a new project (interactive prompts)npm create mantlejs@latest my-app
# Scaffold non-interactively (flags go after `--`)npm create mantlejs@latest my-app -- --database pg --auth local --package-manager npm
# Move into the projectcd my-app
# Install dependenciesnpm install
# Start the dev servernpm run devnewProject(name, options)
Section titled “newProject(name, options)”Re-exported from @mantlejs/cli; the bin’s programmatic entry point. Returns a Promise<void>
that resolves once the project has been scaffolded (and installed, unless skipInstall is set).
import { newProject } from "create-mantlejs";
await newProject("my-app", { database: "pg", auth: "local", packageManager: "npm",});CLI flags
Section titled “CLI flags”| Flag | Values | Default | Description |
|---|---|---|---|
--database <db> |
pg, sqlite, mongodb, none |
prompted | Database adapter |
--auth <auth> |
local, google, github, facebook, apple, microsoft, linkedin, twitter, none |
prompted | Auth strategy |
--cors |
— | false |
Enable CORS on the transport |
--redis |
— | false |
Wire @mantlejs/auth-redis state/refresh-token stores |
--package-manager <pm> |
npm, yarn, pnpm |
prompted | Package manager |
--skip-install |
— | false |
Skip running install after scaffold |
import type { NewProjectOptions, Database, Auth, PackageManager, Transport } from "create-mantlejs";| Type | Description |
|---|---|
NewProjectOptions |
Options accepted by newProject() |
Database |
"pg" | "sqlite" | "mongodb" | "none" |
Auth |
"local" | "google" | "github" | "facebook" | "apple" | "microsoft" | "linkedin" | "twitter" | "none" |
PackageManager |
"npm" | "yarn" | "pnpm" |
Transport |
"express" |
Development
Section titled “Development”npx nx build create-mantlejs # compilenpx nx test create-mantlejs # run testsnpx nx lint create-mantlejs # lintnpx nx run create-mantlejs:e2e-scaffold # full scaffold → build → test → boot → CRUD → SIGTERM smoke testPublishing
Section titled “Publishing”Build before publishing:
npx nx build create-mantlejsFirst publish:
cd packages/create-mantlejsnpm publish --access publicSubsequent releases — bump version in packages/create-mantlejs/package.json, then:
cd packages/create-mantlejsnpm publishTesting locally with Verdaccio
Section titled “Testing locally with Verdaccio”# Terminal 1 — start the local registrynpx nx run @mantle/source:local-registry
# Terminal 2 — publish to itcd packages/create-mantlejsnpm publish --registry http://localhost:4873
# Test the initializernpm create mantlejs my-test-app --registry http://localhost:4873