@programinglive/commiter 1.2.6 โ 1.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +28 -28
- package/.github/ISSUE_TEMPLATE/config.yml +5 -5
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -20
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -24
- package/.netlify/netlify.toml +25 -0
- package/.netlify/state.json +3 -0
- package/CHANGELOG.md +259 -189
- package/CODE_OF_CONDUCT.md +36 -36
- package/LICENSE +21 -21
- package/PRD.md +96 -91
- package/PUBLISH.md +142 -142
- package/README.md +217 -211
- package/SECURITY.md +30 -30
- package/commitlint.config.cjs +4 -4
- package/docs/CREATE_RELEASES.md +103 -103
- package/docs/QUICK_RELEASE_GUIDE.md +101 -101
- package/docs/release-notes/RELEASE_NOTES.md +233 -177
- package/index.js +199 -196
- package/netlify.toml +2 -0
- package/package.json +96 -97
- package/scripts/create-releases.js +219 -219
- package/scripts/release.cjs +258 -284
- package/scripts/update-release-notes.cjs +182 -182
- package/web/README.md +79 -79
- package/web/css/style.css +963 -963
- package/web/favicon.svg +10 -10
- package/web/index.html +510 -507
- package/web/js/script.js +256 -256
- package/web/og-image.svg +24 -24
- package/scripts/update-web-releases.js +0 -232
- package/scripts/update-web-version.js +0 -37
package/index.js
CHANGED
|
@@ -1,196 +1,199 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Commiter - Commit convention tooling for standard-version releases
|
|
5
|
-
*
|
|
6
|
-
* This package helps enforce conventional commits and automate releases
|
|
7
|
-
* with beautiful changelogs featuring icons for each commit type.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const { execSync } = require('child_process');
|
|
11
|
-
const fs = require('fs');
|
|
12
|
-
const path = require('path');
|
|
13
|
-
|
|
14
|
-
function ensureSafeTestScript(scripts = {}) {
|
|
15
|
-
const defaultFailingTestScript = 'echo "Error: no test specified" && exit 1';
|
|
16
|
-
if (!scripts.test || scripts.test === defaultFailingTestScript) {
|
|
17
|
-
scripts.test = 'echo "No tests specified"';
|
|
18
|
-
}
|
|
19
|
-
return scripts;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function copyRecursiveSync(src, dest) {
|
|
23
|
-
const exists = fs.existsSync(src);
|
|
24
|
-
const stats = exists && fs.statSync(src);
|
|
25
|
-
const isDirectory = exists && stats.isDirectory();
|
|
26
|
-
|
|
27
|
-
if (isDirectory) {
|
|
28
|
-
if (!fs.existsSync(dest)) {
|
|
29
|
-
fs.mkdirSync(dest);
|
|
30
|
-
}
|
|
31
|
-
fs.readdirSync(src).forEach((childItemName) => {
|
|
32
|
-
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
|
33
|
-
});
|
|
34
|
-
} else {
|
|
35
|
-
fs.copyFileSync(src, dest);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function setupCommiter() {
|
|
40
|
-
console.log('๐ Setting up Commiter...\n');
|
|
41
|
-
|
|
42
|
-
// Check if package.json exists
|
|
43
|
-
if (!fs.existsSync('package.json')) {
|
|
44
|
-
console.error('โ Error: package.json not found. Please run this in a Node.js project directory.');
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
// Install dependencies
|
|
50
|
-
console.log('๐ฆ Installing dependencies...');
|
|
51
|
-
execSync('npm install --save-dev standard-version @commitlint/cli @commitlint/config-conventional husky', {
|
|
52
|
-
stdio: 'inherit'
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
// Read package.json
|
|
56
|
-
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
57
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
58
|
-
|
|
59
|
-
packageJson.scripts = ensureSafeTestScript(packageJson.scripts || {});
|
|
60
|
-
// Add scripts
|
|
61
|
-
packageJson.scripts.prepare = 'husky';
|
|
62
|
-
packageJson.scripts.release = 'node scripts/release.cjs';
|
|
63
|
-
packageJson.scripts['release:major'] = 'node scripts/release.cjs major';
|
|
64
|
-
packageJson.scripts['release:minor'] = 'node scripts/release.cjs minor';
|
|
65
|
-
packageJson.scripts['release:patch'] = 'node scripts/release.cjs patch';
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{ type: '
|
|
73
|
-
{ type: '
|
|
74
|
-
{ type: '
|
|
75
|
-
{ type: '
|
|
76
|
-
{ type: '
|
|
77
|
-
{ type: '
|
|
78
|
-
{ type: '
|
|
79
|
-
{ type: '
|
|
80
|
-
{ type: '
|
|
81
|
-
{ type: '
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
fs.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
fs.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
console.log('
|
|
177
|
-
console.log('
|
|
178
|
-
console.log(' npm run release
|
|
179
|
-
console.log(' npm run release
|
|
180
|
-
console.log(' npm run release -
|
|
181
|
-
console.log(' npm run release
|
|
182
|
-
console.log('
|
|
183
|
-
console.log('
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
console.
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Commiter - Commit convention tooling for standard-version releases
|
|
5
|
+
*
|
|
6
|
+
* This package helps enforce conventional commits and automate releases
|
|
7
|
+
* with beautiful changelogs featuring icons for each commit type.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const { execSync } = require('child_process');
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
|
|
14
|
+
function ensureSafeTestScript(scripts = {}) {
|
|
15
|
+
const defaultFailingTestScript = 'echo "Error: no test specified" && exit 1';
|
|
16
|
+
if (!scripts.test || scripts.test === defaultFailingTestScript) {
|
|
17
|
+
scripts.test = 'echo "No tests specified"';
|
|
18
|
+
}
|
|
19
|
+
return scripts;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function copyRecursiveSync(src, dest) {
|
|
23
|
+
const exists = fs.existsSync(src);
|
|
24
|
+
const stats = exists && fs.statSync(src);
|
|
25
|
+
const isDirectory = exists && stats.isDirectory();
|
|
26
|
+
|
|
27
|
+
if (isDirectory) {
|
|
28
|
+
if (!fs.existsSync(dest)) {
|
|
29
|
+
fs.mkdirSync(dest);
|
|
30
|
+
}
|
|
31
|
+
fs.readdirSync(src).forEach((childItemName) => {
|
|
32
|
+
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
fs.copyFileSync(src, dest);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function setupCommiter() {
|
|
40
|
+
console.log('๐ Setting up Commiter...\n');
|
|
41
|
+
|
|
42
|
+
// Check if package.json exists
|
|
43
|
+
if (!fs.existsSync('package.json')) {
|
|
44
|
+
console.error('โ Error: package.json not found. Please run this in a Node.js project directory.');
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
// Install dependencies
|
|
50
|
+
console.log('๐ฆ Installing dependencies...');
|
|
51
|
+
execSync('npm install --save-dev standard-version @commitlint/cli @commitlint/config-conventional husky', {
|
|
52
|
+
stdio: 'inherit'
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Read package.json
|
|
56
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
57
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
58
|
+
|
|
59
|
+
packageJson.scripts = ensureSafeTestScript(packageJson.scripts || {});
|
|
60
|
+
// Add scripts
|
|
61
|
+
packageJson.scripts.prepare = 'husky';
|
|
62
|
+
packageJson.scripts.release = 'node scripts/release.cjs';
|
|
63
|
+
packageJson.scripts['release:major'] = 'node scripts/release.cjs major';
|
|
64
|
+
packageJson.scripts['release:minor'] = 'node scripts/release.cjs minor';
|
|
65
|
+
packageJson.scripts['release:patch'] = 'node scripts/release.cjs patch';
|
|
66
|
+
packageJson.scripts['release:first'] = 'node scripts/release.cjs --first-release';
|
|
67
|
+
|
|
68
|
+
// Add standard-version config
|
|
69
|
+
packageJson['standard-version'] = {
|
|
70
|
+
releaseCommitMessageFormat: 'chore(release): {{currentTag}} ๐',
|
|
71
|
+
types: [
|
|
72
|
+
{ type: 'feat', section: 'โจ Features' },
|
|
73
|
+
{ type: 'fix', section: '๐ Bug Fixes' },
|
|
74
|
+
{ type: 'perf', section: 'โก Performance' },
|
|
75
|
+
{ type: 'refactor', section: 'โป๏ธ Refactors' },
|
|
76
|
+
{ type: 'docs', section: '๐ Documentation' },
|
|
77
|
+
{ type: 'style', section: '๐ Styles' },
|
|
78
|
+
{ type: 'test', section: 'โ
Tests' },
|
|
79
|
+
{ type: 'build', section: '๐๏ธ Build System' },
|
|
80
|
+
{ type: 'ci', section: '๐ท Continuous Integration' },
|
|
81
|
+
{ type: 'chore', section: '๐งน Chores' },
|
|
82
|
+
{ type: 'revert', section: 'โช Reverts' }
|
|
83
|
+
]
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Write updated package.json
|
|
87
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
88
|
+
|
|
89
|
+
// Create release helper script
|
|
90
|
+
console.log('๐ ๏ธ Creating release helper script...');
|
|
91
|
+
const releaseScriptDir = path.join(process.cwd(), 'scripts');
|
|
92
|
+
if (!fs.existsSync(releaseScriptDir)) {
|
|
93
|
+
fs.mkdirSync(releaseScriptDir, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const releaseScriptPath = path.join(releaseScriptDir, 'release.cjs');
|
|
97
|
+
const releaseScriptSource = path.join(__dirname, 'scripts', 'release.cjs');
|
|
98
|
+
fs.copyFileSync(releaseScriptSource, releaseScriptPath);
|
|
99
|
+
|
|
100
|
+
// Copy update-release-notes.js
|
|
101
|
+
const updateNotesSource = path.join(__dirname, 'scripts', 'update-release-notes.cjs');
|
|
102
|
+
const updateNotesDest = path.join(releaseScriptDir, 'update-release-notes.cjs');
|
|
103
|
+
if (fs.existsSync(updateNotesSource)) {
|
|
104
|
+
fs.copyFileSync(updateNotesSource, updateNotesDest);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Copy preload directory
|
|
108
|
+
const preloadSource = path.join(__dirname, 'scripts', 'preload');
|
|
109
|
+
const preloadDest = path.join(releaseScriptDir, 'preload');
|
|
110
|
+
if (fs.existsSync(preloadSource)) {
|
|
111
|
+
copyRecursiveSync(preloadSource, preloadDest);
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
fs.chmodSync(releaseScriptPath, 0o755);
|
|
115
|
+
} catch (error) {
|
|
116
|
+
// Ignore chmod errors on non-POSIX systems
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Determine commitlint config format based on project module type
|
|
120
|
+
const isEsmProject = packageJson.type === 'module';
|
|
121
|
+
const commitlintConfigFile = isEsmProject ? 'commitlint.config.js' : 'commitlint.config.cjs';
|
|
122
|
+
const commitlintConfigContent = isEsmProject
|
|
123
|
+
? `export default {
|
|
124
|
+
extends: ['@commitlint/config-conventional'],
|
|
125
|
+
ignores: [(message) => message.startsWith('chore(release):')]
|
|
126
|
+
}\n`
|
|
127
|
+
: `module.exports = {
|
|
128
|
+
extends: ['@commitlint/config-conventional'],
|
|
129
|
+
ignores: [(message) => message.startsWith('chore(release):')]
|
|
130
|
+
}\n`;
|
|
131
|
+
|
|
132
|
+
const legacyCommitlintConfigFile = isEsmProject ? 'commitlint.config.cjs' : 'commitlint.config.js';
|
|
133
|
+
if (fs.existsSync(legacyCommitlintConfigFile)) {
|
|
134
|
+
fs.rmSync(legacyCommitlintConfigFile);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
console.log(`โ๏ธ Creating commitlint config (${commitlintConfigFile})...`);
|
|
138
|
+
fs.writeFileSync(commitlintConfigFile, commitlintConfigContent);
|
|
139
|
+
|
|
140
|
+
// Initialize Husky
|
|
141
|
+
console.log('๐ถ Setting up Husky...');
|
|
142
|
+
execSync('npx husky init', { stdio: 'inherit' });
|
|
143
|
+
|
|
144
|
+
// Create commit-msg hook
|
|
145
|
+
const huskyDir = path.join(process.cwd(), '.husky');
|
|
146
|
+
if (!fs.existsSync(huskyDir)) {
|
|
147
|
+
fs.mkdirSync(huskyDir, { recursive: true });
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const commitMsgHook = `#!/usr/bin/env sh
|
|
151
|
+
|
|
152
|
+
npx --no -- commitlint --edit "$1"
|
|
153
|
+
`;
|
|
154
|
+
fs.writeFileSync(path.join(huskyDir, 'commit-msg'), commitMsgHook);
|
|
155
|
+
fs.chmodSync(path.join(huskyDir, 'commit-msg'), 0o755);
|
|
156
|
+
|
|
157
|
+
// Create pre-commit hook (tests run only during release)
|
|
158
|
+
const preCommitHook = `#!/usr/bin/env sh
|
|
159
|
+
# Pre-commit hook - tests are run only during release
|
|
160
|
+
`;
|
|
161
|
+
fs.writeFileSync(path.join(huskyDir, 'pre-commit'), preCommitHook);
|
|
162
|
+
fs.chmodSync(path.join(huskyDir, 'pre-commit'), 0o755);
|
|
163
|
+
|
|
164
|
+
// Update .gitignore
|
|
165
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
166
|
+
let gitignoreContent = '';
|
|
167
|
+
if (fs.existsSync(gitignorePath)) {
|
|
168
|
+
gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (!gitignoreContent.includes('node_modules')) {
|
|
172
|
+
console.log('๐ Updating .gitignore...');
|
|
173
|
+
fs.appendFileSync(gitignorePath, '\nnode_modules\n');
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
console.log('\nโ
Commiter setup complete!\n');
|
|
177
|
+
console.log('๐ Available commands:');
|
|
178
|
+
console.log(' npm run release major - Create a major release (1.0.0 โ 2.0.0)');
|
|
179
|
+
console.log(' npm run release minor - Create a minor release (1.0.0 โ 1.1.0)');
|
|
180
|
+
console.log(' npm run release patch - Create a patch release (1.0.0 โ 1.0.1)');
|
|
181
|
+
console.log(' npm run release - Auto-detect version bump');
|
|
182
|
+
console.log(' npm run release:first - Initialize the first release at 0.0.1');
|
|
183
|
+
console.log(' npm run release -- --first - Alternative first release flag (0.0.1 start)');
|
|
184
|
+
console.log(' npm run release -- --prerelease beta - Create a beta prerelease\n');
|
|
185
|
+
console.log('๐ฏ Commit format: type(scope): subject');
|
|
186
|
+
console.log(' Example: feat(auth): add user login\n');
|
|
187
|
+
|
|
188
|
+
} catch (error) {
|
|
189
|
+
console.error('โ Error during setup:', error.message);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Run setup if called directly
|
|
195
|
+
if (require.main === module) {
|
|
196
|
+
setupCommiter();
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
module.exports = { setupCommiter, ensureSafeTestScript };
|
package/netlify.toml
ADDED
package/package.json
CHANGED
|
@@ -1,97 +1,96 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@programinglive/commiter",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "Commiter keeps repositories release-ready by enforcing conventional commits, generating icon-rich changelog entries, and orchestrating semantic version bumps without manual toil. It bootstraps Husky hooks, commitlint rules, and release scripts that inspect history, detect framework-specific test commands, run them automatically, tag git releases, coordinate npm publishing, surface release metrics, enforce project-specific checks, and give maintainers observability across distributed teams. Plus!",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"commiter": "
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"test": "node --test",
|
|
11
|
-
"prepare": "husky",
|
|
12
|
-
"release": "node scripts/release.cjs",
|
|
13
|
-
"release:major": "node scripts/release.cjs major",
|
|
14
|
-
"release:minor": "node scripts/release.cjs minor",
|
|
15
|
-
"release:patch": "node scripts/release.cjs patch",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"@commitlint/
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@programinglive/commiter",
|
|
3
|
+
"version": "1.2.12",
|
|
4
|
+
"description": "Commiter keeps repositories release-ready by enforcing conventional commits, generating icon-rich changelog entries, and orchestrating semantic version bumps without manual toil. It bootstraps Husky hooks, commitlint rules, and release scripts that inspect history, detect framework-specific test commands, run them automatically, tag git releases, coordinate npm publishing, surface release metrics, enforce project-specific checks, and give maintainers observability across distributed teams. Plus!",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"commiter": "index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node --test",
|
|
11
|
+
"prepare": "husky",
|
|
12
|
+
"release": "node scripts/release.cjs",
|
|
13
|
+
"release:major": "node scripts/release.cjs major",
|
|
14
|
+
"release:minor": "node scripts/release.cjs minor",
|
|
15
|
+
"release:patch": "node scripts/release.cjs patch",
|
|
16
|
+
"release:first": "node scripts/release.cjs --first-release",
|
|
17
|
+
"web": "npx serve web"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"commit",
|
|
21
|
+
"conventional-commits",
|
|
22
|
+
"standard-version",
|
|
23
|
+
"changelog",
|
|
24
|
+
"versioning",
|
|
25
|
+
"semantic-release",
|
|
26
|
+
"git-hooks",
|
|
27
|
+
"husky",
|
|
28
|
+
"commitlint"
|
|
29
|
+
],
|
|
30
|
+
"author": "Programming Live",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/programinglive/commiter.git"
|
|
35
|
+
},
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/programinglive/commiter/issues"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://commiter.programinglive.com",
|
|
40
|
+
"type": "commonjs",
|
|
41
|
+
"standard-version": {
|
|
42
|
+
"releaseCommitMessageFormat": "chore(release): {{currentTag}} ๐",
|
|
43
|
+
"types": [
|
|
44
|
+
{
|
|
45
|
+
"type": "feat",
|
|
46
|
+
"section": "โจ Features"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "fix",
|
|
50
|
+
"section": "๐ Bug Fixes"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "perf",
|
|
54
|
+
"section": "โก Performance"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "refactor",
|
|
58
|
+
"section": "โป๏ธ Refactors"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "docs",
|
|
62
|
+
"section": "๐ Documentation"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "style",
|
|
66
|
+
"section": "๐ Styles"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "test",
|
|
70
|
+
"section": "โ
Tests"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "build",
|
|
74
|
+
"section": "๐๏ธ Build System"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "ci",
|
|
78
|
+
"section": "๐ท Continuous Integration"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "chore",
|
|
82
|
+
"section": "๐งน Chores"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "revert",
|
|
86
|
+
"section": "โช Reverts"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"devDependencies": {
|
|
91
|
+
"@commitlint/cli": "^20.1.0",
|
|
92
|
+
"@commitlint/config-conventional": "^20.0.0",
|
|
93
|
+
"husky": "^9.1.7",
|
|
94
|
+
"standard-version": "^9.5.0"
|
|
95
|
+
}
|
|
96
|
+
}
|