@adbayb/stack v1.16.1
✨ Features
Stack
allows creating an NPM project in a quick, easy and opinionated way with:
- A unified monorepo-driven and git-driven approach for all kinds of projects (single-purpose library, multiple libraries, application(s), ...)
- Support for several application templates (for now, only a default template is available, but others can be added later)
- Standardized file structure including optional folder creation such as
examples
,packages
, ... - Enable all project lifecycle steps with commands from the setup, check, fix, build, and test to the versioning and release
- Built-in configuration preset setup (including Node/NPM runtime, Git ignore/hooks, TypeScript, ESLint, Prettier, EditorConfig, Renovate, Changesets, and VSCode)
- A welcoming environment for users and contributors with the continuous integration setup, and the creation of
README.md
,CONTRIBUTING.md
, and GitHub template files (including issue and pull request ones), ... - An optimized development environment with command caching (no build needed if nothing changes)
🚀 Usage
This section introduces the stack
essentials by walking through its main commands:
1️⃣ Create the NPM project via the @adbayb/create
initializer:
# Npm
npm init @adbayb
# Pnpm
pnpm create @adbayb
2️⃣ Play with available commands (already set up in the generated root package.json
):
# Setup initial requirements (including Git hooks installation)
stack install
# Clean the project
stack clean
# Check code health (static analysis including linters, types, and commit message)
stack check
# Fix auto-fixable issues
stack fix
# Start the project in production mode
stack start
# Build the project in production mode
stack build
# Build and start the project in development mode
stack watch
# Test the code execution
stack test
# Log, version, and publish package(s)
stack release
3️⃣ Enjoy!
🏗️ Architecture
flowchart TD
N("npm init @adbayb"):::strokeWidth -- Calls --> C("<a href='https://github.com/adbayb/stack/tree/main/packages/create'>@adbayb/create</a>"):::strokeWidth
C -- Uses --> S("<a href='https://github.com/adbayb/stack/tree/main/stack'>@adbayb/stack</a>"):::strokeWidth
S -- "Installs" --> EC("<a href='https://github.com/adbayb/stack/tree/main/packages/eslint-config'>@adbayb/eslint-config</a>"):::strokeWidth
S -- "Installs" --> PC("<a href='https://github.com/adbayb/stack/tree/main/packages/prettier-config'>@adbayb/prettier-config</a>"):::strokeWidth
S -- "Installs" --> TC("<a href='https://github.com/adbayb/stack/tree/main/packages/ts-config'>@adbayb/ts-config</a>"):::strokeWidth
S -- "Scaffolds" --> P("Created project"):::strokeWidth
EC -- "Configures" --> P
PC -- "Configures" --> P
TC -- "Configures" --> P
style C fill:#daf2d7,stroke:#90cf8e
style S fill:#daf2d7,stroke:#90cf8e
style EC fill:#daf2d7,stroke:#90cf8e
style PC fill:#daf2d7,stroke:#90cf8e
style TC fill:#daf2d7,stroke:#90cf8e
classDef strokeWidth stroke-width:3px
Used technologies
- Static code analysis: ESLint, Prettier
- Node package manager: PNPM
- Task orchestration: Turborepo
- Release: Changesets
- Testing: Vitest
Used conventions
- Commits
- Scripts
- File Structure
- Monorepo-first structure to:
- Keep a consistent file structure pattern across templates (ease template familiarity and onboarding)
- Ease examples setup
- Not clutter the published package with development-related context, metadata, and artifacts
- Monorepo-first structure to:
👣 Roadmap
stack check
: Lint packages (caret range for dependencies and strict ones for dev dependencies)
✍️ Contribution
We're open to new contributions, you can find more details here.
📖 License
10 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago