Skip to content
This repository was archived by the owner on Sep 23, 2026. It is now read-only.

Commit 68691ff

Browse files
authored
Merge pull request #60 from mi-examples/develop
🚀 Release v0.12.3: Node.js 22 Compatibility & Infrastructure Improvements
2 parents 6d59c1c + ab49d12 commit 68691ff

30 files changed

Lines changed: 3692 additions & 2088 deletions
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
---
2+
description: "Guidelines for split commits in packages directory for semantic-release compatibility"
3+
globs: "packages/**/*"
4+
---
5+
6+
# Packages Split Commits Rule
7+
8+
## Overview
9+
This rule ensures proper commit structure for the packages directory to maintain semantic-release compatibility in a monorepo setup.
10+
11+
## Critical Requirements
12+
13+
### 1. **Separate Commits Per Package**
14+
When making changes that affect multiple packages, create separate commits for each package:
15+
16+
```bash
17+
# ❌ WRONG - Single commit affecting multiple packages
18+
git commit -m "feat: add new feature to both pp-dev and create-pp-dev"
19+
20+
# ✅ CORRECT - Separate commits per package
21+
git commit -m "feat(pp-dev): add new authentication middleware"
22+
git commit -m "feat(create-pp-dev): update templates with new auth feature"
23+
```
24+
25+
### 2. **Package-Specific Commit Messages**
26+
Use the package name as the scope in commit messages:
27+
28+
```bash
29+
# ✅ CORRECT examples
30+
feat(pp-dev): add new CLI command
31+
fix(create-pp-dev): resolve template generation issue
32+
docs(pp-dev): update API documentation
33+
chore(create-pp-dev): update dependencies
34+
```
35+
36+
### 3. **File Path Considerations**
37+
When committing changes, be specific about which package is affected:
38+
39+
```bash
40+
# For pp-dev changes
41+
git add packages/pp-dev/
42+
git commit -m "feat(pp-dev): your message"
43+
44+
# For create-pp-dev changes
45+
git add packages/create-pp-dev/
46+
git commit -m "feat(create-pp-dev): your message"
47+
48+
# For template changes
49+
git add packages/create-pp-dev/template-*/
50+
git commit -m "feat(create-pp-dev): update template configurations"
51+
```
52+
53+
## Why This Matters
54+
55+
### Semantic Release Monorepo Behavior
56+
- **semantic-release-monorepo** analyzes commits per package
57+
- Each package gets its own version bump based on its specific commits
58+
- Mixed commits can cause incorrect version calculations
59+
- Package-specific commits ensure accurate changelog generation
60+
61+
### Version Bump Logic
62+
- `feat(pp-dev):` → triggers MINOR version bump for pp-dev
63+
- `fix(create-pp-dev):` → triggers PATCH version bump for create-pp-dev
64+
- Mixed commits may cause unexpected version bumps
65+
66+
## Package Structure
67+
68+
### Current Packages
69+
- **pp-dev**: Core development tool (`packages/pp-dev/`)
70+
- **create-pp-dev**: Template generator (`packages/create-pp-dev/`)
71+
72+
### Template Dependencies
73+
When updating template files, ensure the parent package is also updated:
74+
```bash
75+
# Update template files
76+
git add packages/create-pp-dev/template-*/
77+
git commit -m "feat(create-pp-dev): update template dependencies"
78+
79+
# Update main package.json if needed
80+
git add packages/create-pp-dev/package.json
81+
git commit -m "chore(create-pp-dev): update pp-dev dependency version"
82+
```
83+
84+
## Commit Message Format
85+
86+
### Required Format
87+
```
88+
<type>(<package>): <subject>
89+
```
90+
91+
### Valid Types
92+
- `feat` - New features (MINOR version bump)
93+
- `fix` - Bug fixes (PATCH version bump)
94+
- `docs` - Documentation changes (NO version bump)
95+
- `style` - Code style changes (NO version bump)
96+
- `refactor` - Code refactoring (NO version bump)
97+
- `perf` - Performance improvements (NO version bump)
98+
- `test` - Adding/updating tests (NO version bump)
99+
- `chore` - Maintenance tasks (NO version bump)
100+
- `ci` - CI/CD changes (NO version bump)
101+
- `build` - Build system changes (NO version bump)
102+
103+
### Valid Package Scopes
104+
- `pp-dev` - Changes to the pp-dev package
105+
- `create-pp-dev` - Changes to the create-pp-dev package
106+
107+
## Examples
108+
109+
### ✅ Good Examples
110+
```bash
111+
feat(pp-dev): add new authentication middleware
112+
fix(pp-dev): resolve memory leak in data processing
113+
docs(pp-dev): update installation instructions
114+
chore(create-pp-dev): update all template dependencies
115+
feat(create-pp-dev): add new Next.js template variant
116+
```
117+
118+
### ❌ Bad Examples
119+
```bash
120+
feat: add new feature to both packages
121+
fix: resolve issues in pp-dev and create-pp-dev
122+
chore: update dependencies
123+
feat(pp-dev,create-pp-dev): add new feature
124+
```
125+
126+
## Workflow Integration
127+
128+
### Release Process
129+
1. Make package-specific commits
130+
2. Push to appropriate branch (main for stable, develop for beta)
131+
3. semantic-release-monorepo analyzes each package independently
132+
4. Each package gets versioned based on its own commit history
133+
5. GitHub Actions workflow publishes packages separately
134+
135+
### Branch Strategy
136+
- **main**: Stable releases (v1.0.0, v1.1.0, etc.)
137+
- **develop**: Beta releases (v1.1.0-beta.1, v1.1.0-beta.2, etc.)
138+
139+
## Enforcement
140+
141+
### Pre-commit Hooks
142+
Consider adding pre-commit hooks to enforce this rule:
143+
```bash
144+
# Check if commit affects multiple packages
145+
if git diff --cached --name-only | grep -E '^packages/' | cut -d'/' -f2 | sort -u | wc -l | grep -v '^1$'; then
146+
echo "Error: Commit affects multiple packages. Please split into separate commits."
147+
exit 1
148+
fi
149+
```
150+
151+
### Code Review Checklist
152+
- [ ] Each commit affects only one package
153+
- [ ] Commit message includes correct package scope
154+
- [ ] No mixed changes across packages in single commit
155+
- [ ] Template changes are committed with create-pp-dev scope

‎.dockerignore‎

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Node modules
2+
node_modules/
3+
*/node_modules/
4+
**/node_modules/
5+
6+
# Build outputs
7+
dist/
8+
build/
9+
.next/
10+
out/
11+
12+
# Logs
13+
*.log
14+
npm-debug.log*
15+
yarn-debug.log*
16+
yarn-error.log*
17+
18+
# Runtime data
19+
pids
20+
*.pid
21+
*.seed
22+
*.pid.lock
23+
24+
# Coverage directory used by tools like istanbul
25+
coverage/
26+
*.lcov
27+
28+
# nyc test coverage
29+
.nyc_output
30+
31+
# Dependency directories
32+
jspm_packages/
33+
34+
# Optional npm cache directory
35+
.npm
36+
37+
# Optional eslint cache
38+
.eslintcache
39+
40+
# Optional REPL history
41+
.node_repl_history
42+
43+
# Output of 'npm pack'
44+
*.tgz
45+
46+
# Yarn Integrity file
47+
.yarn-integrity
48+
49+
# dotenv environment variables file
50+
.env
51+
.env.test
52+
.env.local
53+
.env.development.local
54+
.env.test.local
55+
.env.production.local
56+
57+
# parcel-bundler cache (https://parceljs.org/)
58+
.cache
59+
.parcel-cache
60+
61+
# next.js build output
62+
.next
63+
64+
# nuxt.js build output
65+
.nuxt
66+
67+
# vuepress build output
68+
.vuepress/dist
69+
70+
# Serverless directories
71+
.serverless/
72+
73+
# FuseBox cache
74+
.fusebox/
75+
76+
# DynamoDB Local files
77+
.dynamodb/
78+
79+
# TernJS port file
80+
.tern-port
81+
82+
# Stores VSCode versions used for testing VSCode extensions
83+
.vscode-test
84+
85+
# IDE files
86+
.vscode/
87+
.idea/
88+
*.swp
89+
*.swo
90+
*~
91+
92+
# OS generated files
93+
.DS_Store
94+
.DS_Store?
95+
._*
96+
.Spotlight-V100
97+
.Trashes
98+
ehthumbs.db
99+
Thumbs.db
100+
101+
# Git
102+
.git/
103+
.gitignore
104+
105+
# Docker
106+
Dockerfile*
107+
docker-compose*
108+
.dockerignore
109+
110+
# Test results
111+
test-results/

‎.eslintrc.json‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"parserOptions": {
1111
"ecmaVersion": "latest",
1212
"sourceType": "module",
13+
"project": "./tsconfig.json",
1314
"ecmaFeatures": {
1415
"jsx": true
1516
}
@@ -80,6 +81,12 @@
8081
"no-undef": "error",
8182
"no-unused-vars": "error"
8283
}
84+
},
85+
{
86+
"files": ["e2e/**/*.{ts,tsx}"],
87+
"parserOptions": {
88+
"project": "./e2e/tsconfig.json"
89+
}
8390
}
8491
],
8592
"ignorePatterns": [

0 commit comments

Comments
 (0)