@tukuyomil032/bricklayer 1.0.0
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/README.md +92 -0
- package/dist/create/file-writer.js +96 -0
- package/dist/create/index.js +91 -0
- package/dist/create/installer.js +167 -0
- package/dist/create/licenses.js +1024 -0
- package/dist/create/package-versions.js +63 -0
- package/dist/create/prompts.js +249 -0
- package/dist/create/templates.js +410 -0
- package/dist/create/types.js +1 -0
- package/dist/index.js +16 -0
- package/dist/sample.js +11 -0
- package/package.json +81 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import LICENSE_TEXTS from './licenses.js';
|
|
2
|
+
// Embedded templates (inlined so builds include templates without copying files)
|
|
3
|
+
const staticTemplates = {
|
|
4
|
+
gitignore: [
|
|
5
|
+
"# Dependencies",
|
|
6
|
+
"node_modules/",
|
|
7
|
+
"bun.lockb",
|
|
8
|
+
"",
|
|
9
|
+
"# Build output",
|
|
10
|
+
"dist/",
|
|
11
|
+
"",
|
|
12
|
+
"# Environment files",
|
|
13
|
+
".env",
|
|
14
|
+
".env.local",
|
|
15
|
+
".env.*.local",
|
|
16
|
+
"",
|
|
17
|
+
"# macOS",
|
|
18
|
+
".DS_Store",
|
|
19
|
+
".AppleDouble",
|
|
20
|
+
".LSOverride",
|
|
21
|
+
"",
|
|
22
|
+
"# IDE",
|
|
23
|
+
".vscode/",
|
|
24
|
+
".idea/",
|
|
25
|
+
"*.swp",
|
|
26
|
+
"*.swo",
|
|
27
|
+
"*~",
|
|
28
|
+
"",
|
|
29
|
+
"# Logs",
|
|
30
|
+
"logs/",
|
|
31
|
+
"*.log",
|
|
32
|
+
"npm-debug.log*",
|
|
33
|
+
"yarn-debug.log*",
|
|
34
|
+
"yarn-error.log*",
|
|
35
|
+
"",
|
|
36
|
+
"# Temporary files",
|
|
37
|
+
"*.tmp",
|
|
38
|
+
".temp/",
|
|
39
|
+
"temp/",
|
|
40
|
+
"",
|
|
41
|
+
"# Linter and formatter cache",
|
|
42
|
+
".eslintcache",
|
|
43
|
+
".prettier-cache",
|
|
44
|
+
"",
|
|
45
|
+
"# Husky",
|
|
46
|
+
".husky/_"
|
|
47
|
+
],
|
|
48
|
+
prettierignore: [
|
|
49
|
+
"# Dependencies",
|
|
50
|
+
"node_modules",
|
|
51
|
+
"",
|
|
52
|
+
"# Build output",
|
|
53
|
+
"dist",
|
|
54
|
+
"",
|
|
55
|
+
"# Lock files",
|
|
56
|
+
"bun.lockb",
|
|
57
|
+
"package-lock.json",
|
|
58
|
+
"yarn.lock",
|
|
59
|
+
"pnpm-lock.yaml",
|
|
60
|
+
"",
|
|
61
|
+
"# Logs",
|
|
62
|
+
"*.log",
|
|
63
|
+
"",
|
|
64
|
+
"# Coverage",
|
|
65
|
+
"coverage"
|
|
66
|
+
],
|
|
67
|
+
npmignore: [
|
|
68
|
+
"# Source files",
|
|
69
|
+
"src/",
|
|
70
|
+
"tsconfig.json",
|
|
71
|
+
"eslint.config.js",
|
|
72
|
+
".prettierrc",
|
|
73
|
+
".prettierignore",
|
|
74
|
+
".editorconfig",
|
|
75
|
+
"",
|
|
76
|
+
"# Tests and development",
|
|
77
|
+
"*.test.ts",
|
|
78
|
+
"*.spec.ts",
|
|
79
|
+
"coverage/",
|
|
80
|
+
".nyc_output/",
|
|
81
|
+
"",
|
|
82
|
+
"# Git and CI",
|
|
83
|
+
".git/",
|
|
84
|
+
".github/",
|
|
85
|
+
".gitignore",
|
|
86
|
+
".husky/",
|
|
87
|
+
"",
|
|
88
|
+
"# IDE",
|
|
89
|
+
".vscode/",
|
|
90
|
+
".idea/",
|
|
91
|
+
"*.swp",
|
|
92
|
+
"*.swo",
|
|
93
|
+
"*~",
|
|
94
|
+
"",
|
|
95
|
+
"# Logs",
|
|
96
|
+
"logs/",
|
|
97
|
+
"*.log",
|
|
98
|
+
"npm-debug.log*",
|
|
99
|
+
"yarn-debug.log*",
|
|
100
|
+
"yarn-error.log*",
|
|
101
|
+
"",
|
|
102
|
+
"# Lock files",
|
|
103
|
+
"bun.lock",
|
|
104
|
+
"package-lock.json",
|
|
105
|
+
"yarn.lock",
|
|
106
|
+
"pnpm-lock.yaml",
|
|
107
|
+
"",
|
|
108
|
+
"# macOS",
|
|
109
|
+
".DS_Store",
|
|
110
|
+
".AppleDouble",
|
|
111
|
+
".LSOverride",
|
|
112
|
+
"",
|
|
113
|
+
"# Temporary files",
|
|
114
|
+
"*.tmp",
|
|
115
|
+
".temp/",
|
|
116
|
+
"temp/",
|
|
117
|
+
"",
|
|
118
|
+
"# Development",
|
|
119
|
+
"README.dev.md",
|
|
120
|
+
"CONTRIBUTING.md",
|
|
121
|
+
"",
|
|
122
|
+
"# Documentation",
|
|
123
|
+
"docs/",
|
|
124
|
+
"",
|
|
125
|
+
"# Zip files",
|
|
126
|
+
"*.zip"
|
|
127
|
+
],
|
|
128
|
+
editorconfig: [
|
|
129
|
+
"# EditorConfig is awesome: https://EditorConfig.org",
|
|
130
|
+
"",
|
|
131
|
+
"root = true",
|
|
132
|
+
"",
|
|
133
|
+
"[*]",
|
|
134
|
+
"charset = utf-8",
|
|
135
|
+
"end_of_line = lf",
|
|
136
|
+
"insert_final_newline = true",
|
|
137
|
+
"trim_trailing_whitespace = true",
|
|
138
|
+
"indent_style = space",
|
|
139
|
+
"indent_size = 2",
|
|
140
|
+
"",
|
|
141
|
+
"[*.{js,ts}]",
|
|
142
|
+
"indent_style = space",
|
|
143
|
+
"indent_size = 2",
|
|
144
|
+
"",
|
|
145
|
+
"[*.{json,yml,yaml}]",
|
|
146
|
+
"indent_style = space",
|
|
147
|
+
"indent_size = 2",
|
|
148
|
+
"",
|
|
149
|
+
"[*.md]",
|
|
150
|
+
"trim_trailing_whitespace = false",
|
|
151
|
+
"max_line_length = off",
|
|
152
|
+
""
|
|
153
|
+
]
|
|
154
|
+
};
|
|
155
|
+
const hooksTemplates = {
|
|
156
|
+
'pre-commit': [
|
|
157
|
+
"#!/bin/sh",
|
|
158
|
+
". \"$(dirname \"$0\")/_/husky.sh\"",
|
|
159
|
+
"",
|
|
160
|
+
"pnpm run lint-staged"
|
|
161
|
+
],
|
|
162
|
+
'pre-push': [
|
|
163
|
+
"#!/bin/sh",
|
|
164
|
+
". \"$(dirname \"$0\")/_/husky.sh\"",
|
|
165
|
+
"",
|
|
166
|
+
"pnpm run lint && pnpm run format:check"
|
|
167
|
+
]
|
|
168
|
+
};
|
|
169
|
+
// license texts are provided from src/create/licenses.ts
|
|
170
|
+
export function generatePackageJson(answers, versions) {
|
|
171
|
+
const devDeps = {
|
|
172
|
+
typescript: versions?.['typescript'] || '^5.7.2',
|
|
173
|
+
'ts-node': versions?.['ts-node'] || '^10.9.1',
|
|
174
|
+
'@types/node': versions?.['@types/node'] || '^22.10.5',
|
|
175
|
+
'lint-staged': versions?.['lint-staged'] || '^15.2.11',
|
|
176
|
+
};
|
|
177
|
+
// Include ESLint and Prettier by default in generated projects
|
|
178
|
+
devDeps['eslint'] = versions?.['eslint'] || '^9.39.2';
|
|
179
|
+
devDeps['eslint-config-prettier'] = versions?.['eslint-config-prettier'] || '^10.1.8';
|
|
180
|
+
devDeps['eslint-plugin-prettier'] = versions?.['eslint-plugin-prettier'] || '^5.5.4';
|
|
181
|
+
devDeps['@typescript-eslint/parser'] = versions?.['@typescript-eslint/parser'] || '^8.52.0';
|
|
182
|
+
devDeps['@typescript-eslint/eslint-plugin'] =
|
|
183
|
+
versions?.['@typescript-eslint/eslint-plugin'] || '^8.52.0';
|
|
184
|
+
devDeps['prettier'] = versions?.['prettier'] || '^3.7.4';
|
|
185
|
+
// Husky should only be added when requested (useHusky)
|
|
186
|
+
if (answers.useHusky) {
|
|
187
|
+
devDeps['husky'] = versions?.['husky'] || '^9.1.7';
|
|
188
|
+
}
|
|
189
|
+
const deps = {
|
|
190
|
+
commander: versions?.['commander'] || '^11.1.0',
|
|
191
|
+
inquirer: versions?.['inquirer'] || '^9.0.0',
|
|
192
|
+
chalk: versions?.['chalk'] || '^5.3.0',
|
|
193
|
+
ora: versions?.['ora'] || '^8.1.1',
|
|
194
|
+
yargs: versions?.['yargs'] || '^18.0.0',
|
|
195
|
+
};
|
|
196
|
+
const mgr = (answers.packageManager || 'pnpm');
|
|
197
|
+
const pkgManagerVersions = {
|
|
198
|
+
pnpm: versions?.['pnpm'] || '10.27.0',
|
|
199
|
+
npm: versions?.['npm'] || '9.8.1',
|
|
200
|
+
yarn: versions?.['yarn'] || '1.22.22',
|
|
201
|
+
bun: versions?.['bun'] || '1.3.6',
|
|
202
|
+
};
|
|
203
|
+
function exactVersion(v) {
|
|
204
|
+
if (!v)
|
|
205
|
+
return v;
|
|
206
|
+
const m = v.match(/\d+\.\d+\.\d+/);
|
|
207
|
+
return m ? m[0] : v.replace(/^[^\d]*/, '');
|
|
208
|
+
}
|
|
209
|
+
function buildCmdForManager(m) {
|
|
210
|
+
if (m === 'yarn')
|
|
211
|
+
return 'yarn build';
|
|
212
|
+
if (m === 'bun')
|
|
213
|
+
return 'bun run build';
|
|
214
|
+
return `${m} run build`;
|
|
215
|
+
}
|
|
216
|
+
const prepareScript = answers.useHusky
|
|
217
|
+
? `husky install && ${buildCmdForManager(mgr)}`
|
|
218
|
+
: buildCmdForManager(mgr);
|
|
219
|
+
return {
|
|
220
|
+
name: answers.npmPackageName || answers.name,
|
|
221
|
+
private: false,
|
|
222
|
+
version: '0.0.0',
|
|
223
|
+
description: answers.description || '',
|
|
224
|
+
type: answers.moduleType === 'ESM' ? 'module' : 'commonjs',
|
|
225
|
+
main: './dist/index.js',
|
|
226
|
+
module: './dist/index.js',
|
|
227
|
+
bin: {
|
|
228
|
+
[answers.name]: './dist/index.js',
|
|
229
|
+
},
|
|
230
|
+
files: ['dist', 'README.md'],
|
|
231
|
+
scripts: Object.assign({
|
|
232
|
+
build: 'tsc -p tsconfig.json && chmod +x dist/index.js',
|
|
233
|
+
prepare: prepareScript,
|
|
234
|
+
prepublishOnly: buildCmdForManager(mgr),
|
|
235
|
+
dev: 'ts-node --esm src/index.ts',
|
|
236
|
+
start: 'node dist/index.js',
|
|
237
|
+
typecheck: 'tsc --noEmit',
|
|
238
|
+
lint: 'eslint "src/**/*.ts"',
|
|
239
|
+
'lint:fix': 'eslint "src/**/*.ts" --fix',
|
|
240
|
+
format: 'prettier --write "src/**/*.ts"',
|
|
241
|
+
'format:check': 'prettier --check "src/**/*.ts"',
|
|
242
|
+
}, answers.useHusky ? {} : {}),
|
|
243
|
+
keywords: ['cli', 'scaffold', 'typescript', 'generator'],
|
|
244
|
+
author: answers.author,
|
|
245
|
+
license: answers.license,
|
|
246
|
+
repository: {
|
|
247
|
+
type: 'git',
|
|
248
|
+
url: `git+https://github.com/${answers.gitOwner}/${answers.gitRepo}.git`,
|
|
249
|
+
},
|
|
250
|
+
bugs: {
|
|
251
|
+
url: `https://github.com/${answers.gitOwner}/${answers.gitRepo}/issues`,
|
|
252
|
+
},
|
|
253
|
+
homepage: `https://github.com/${answers.gitOwner}/${answers.gitRepo}#readme`,
|
|
254
|
+
dependencies: deps,
|
|
255
|
+
devDependencies: devDeps,
|
|
256
|
+
'lint-staged': {
|
|
257
|
+
'*.ts': ['eslint --fix', 'prettier --write'],
|
|
258
|
+
},
|
|
259
|
+
packageManager: `${mgr}@${exactVersion(pkgManagerVersions[mgr] || '10.27.0')}`,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
export function generateTsConfig(answers) {
|
|
263
|
+
return {
|
|
264
|
+
compilerOptions: {
|
|
265
|
+
target: 'ES2020',
|
|
266
|
+
module: answers.moduleType === 'ESM' ? 'ESNext' : 'CommonJS',
|
|
267
|
+
lib: ['ES2020'],
|
|
268
|
+
outDir: './dist',
|
|
269
|
+
rootDir: './src',
|
|
270
|
+
strict: true,
|
|
271
|
+
esModuleInterop: true,
|
|
272
|
+
skipLibCheck: true,
|
|
273
|
+
forceConsistentCasingInFileNames: true,
|
|
274
|
+
resolveJsonModule: true,
|
|
275
|
+
moduleResolution: 'bundler',
|
|
276
|
+
},
|
|
277
|
+
include: ['src/**/*'],
|
|
278
|
+
exclude: ['node_modules'],
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
export function generateIndexTs(answers) {
|
|
282
|
+
return `#!/usr/bin/env node
|
|
283
|
+
import { Command } from 'commander';
|
|
284
|
+
import { helloCommand } from './commands/hello.js';
|
|
285
|
+
|
|
286
|
+
const program = new Command();
|
|
287
|
+
program.name('${answers.name}').version('0.0.0').description('${answers.description}');
|
|
288
|
+
program.addCommand(helloCommand());
|
|
289
|
+
program.parse(process.argv);
|
|
290
|
+
`;
|
|
291
|
+
}
|
|
292
|
+
export function generateHelloCommandTs() {
|
|
293
|
+
return `import { Command } from 'commander';
|
|
294
|
+
import chalk from 'chalk';
|
|
295
|
+
|
|
296
|
+
export function helloCommand(): Command {
|
|
297
|
+
const cmd = new Command('hello');
|
|
298
|
+
cmd.description('Say hello and demonstrate separated command files');
|
|
299
|
+
cmd.action(() => {
|
|
300
|
+
console.log(chalk.green('Hello from your scaffolded CLI!'));
|
|
301
|
+
});
|
|
302
|
+
return cmd;
|
|
303
|
+
}
|
|
304
|
+
`;
|
|
305
|
+
}
|
|
306
|
+
export function generateReadme(answers) {
|
|
307
|
+
return `# ${answers.name}
|
|
308
|
+
|
|
309
|
+
${answers.description}
|
|
310
|
+
`;
|
|
311
|
+
}
|
|
312
|
+
export function generateGitignore() {
|
|
313
|
+
return Array.isArray(staticTemplates.gitignore)
|
|
314
|
+
? staticTemplates.gitignore.join('\n')
|
|
315
|
+
: staticTemplates.gitignore;
|
|
316
|
+
}
|
|
317
|
+
export function generatePreCommitHook() {
|
|
318
|
+
const hook = hooksTemplates['pre-commit'];
|
|
319
|
+
return Array.isArray(hook) ? hook.join('\n') : hook;
|
|
320
|
+
}
|
|
321
|
+
export function generatePrePushHook() {
|
|
322
|
+
const hook = hooksTemplates['pre-push'];
|
|
323
|
+
return Array.isArray(hook) ? hook.join('\n') : hook;
|
|
324
|
+
}
|
|
325
|
+
export function generatePrettierConfig() {
|
|
326
|
+
return `{
|
|
327
|
+
"semi": true,
|
|
328
|
+
"trailingComma": "es5",
|
|
329
|
+
"singleQuote": true,
|
|
330
|
+
"printWidth": 100,
|
|
331
|
+
"tabWidth": 2,
|
|
332
|
+
"useTabs": false,
|
|
333
|
+
"arrowParens": "always",
|
|
334
|
+
"endOfLine": "lf"
|
|
335
|
+
}
|
|
336
|
+
`;
|
|
337
|
+
}
|
|
338
|
+
export function generatePrettierIgnore() {
|
|
339
|
+
return Array.isArray(staticTemplates.prettierignore)
|
|
340
|
+
? staticTemplates.prettierignore.join('\n')
|
|
341
|
+
: staticTemplates.prettierignore;
|
|
342
|
+
}
|
|
343
|
+
export function generateNpmIgnore() {
|
|
344
|
+
return Array.isArray(staticTemplates.npmignore)
|
|
345
|
+
? staticTemplates.npmignore.join('\n')
|
|
346
|
+
: staticTemplates.npmignore;
|
|
347
|
+
}
|
|
348
|
+
export function generateNpmrc() {
|
|
349
|
+
return `auto-install-peers=true
|
|
350
|
+
node-linker=hoisted
|
|
351
|
+
`;
|
|
352
|
+
}
|
|
353
|
+
export function generateEditorConfig() {
|
|
354
|
+
return Array.isArray(staticTemplates.editorconfig)
|
|
355
|
+
? staticTemplates.editorconfig.join('\n')
|
|
356
|
+
: staticTemplates.editorconfig;
|
|
357
|
+
}
|
|
358
|
+
export function generateEslintConfig() {
|
|
359
|
+
return `import js from '@eslint/js';
|
|
360
|
+
import globals from 'globals';
|
|
361
|
+
import tseslint from 'typescript-eslint';
|
|
362
|
+
import json from '@eslint/json';
|
|
363
|
+
import { defineConfig } from 'eslint/config';
|
|
364
|
+
|
|
365
|
+
export default defineConfig({
|
|
366
|
+
ignores: ['dist/'],
|
|
367
|
+
overrides: [
|
|
368
|
+
{
|
|
369
|
+
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
|
|
370
|
+
plugins: { js },
|
|
371
|
+
extends: ['js/recommended'],
|
|
372
|
+
languageOptions: { globals: globals.node },
|
|
373
|
+
},
|
|
374
|
+
Object.assign({ files: ['**/*.{ts,mts,cts}'] }, tseslint.configs.recommended),
|
|
375
|
+
{
|
|
376
|
+
files: ['**/*.json'],
|
|
377
|
+
plugins: { json },
|
|
378
|
+
language: 'json/json',
|
|
379
|
+
extends: ['json/recommended'],
|
|
380
|
+
},
|
|
381
|
+
],
|
|
382
|
+
});
|
|
383
|
+
`;
|
|
384
|
+
}
|
|
385
|
+
export async function generateLicenseText(license, author, year) {
|
|
386
|
+
// Try reading per-license text files (more readable than JSON storage)
|
|
387
|
+
const keyMap = {
|
|
388
|
+
MIT: 'MIT',
|
|
389
|
+
'Apache-2.0': 'Apache-2.0',
|
|
390
|
+
'GPL-3.0': 'GPL-3.0',
|
|
391
|
+
'GPL-2.0': 'GPL-2.0',
|
|
392
|
+
'BSD-1-Clause': 'BSD-1-Clause',
|
|
393
|
+
'BSD-2-Clause': 'BSD-2-Clause',
|
|
394
|
+
'BSD-3-Clause': 'BSD-3-Clause',
|
|
395
|
+
};
|
|
396
|
+
const key = keyMap[license] || 'MIT';
|
|
397
|
+
const textTemplate = (LICENSE_TEXTS && LICENSE_TEXTS[key]) || '';
|
|
398
|
+
if (!textTemplate)
|
|
399
|
+
return `MIT License\n\nCopyright (c) ${year} ${author}`;
|
|
400
|
+
// Common placeholder patterns to replace in license text files.
|
|
401
|
+
// Support multiple variants users may paste: [year], <YEAR>, {{year}}, {yyyy}, etc.
|
|
402
|
+
const yearRegex = /\[year\]|\{yyyy\}|<year>|\{\{year\}\}|\[YEAR\]|<YEAR>|\{YEAR\}/gi;
|
|
403
|
+
const fullnameRegex = /\[fullname\]|\{name of copyright owner\}|<name>|<fullname>|\{\{fullname\}\}|\[name\]|\{name\}|<FULLNAME>|<NAME>/gi;
|
|
404
|
+
const nameRegex = /\[name\]|\{name\}/gi;
|
|
405
|
+
return textTemplate
|
|
406
|
+
.replace(yearRegex, String(year))
|
|
407
|
+
.replace(fullnameRegex, author)
|
|
408
|
+
.replace(nameRegex, author);
|
|
409
|
+
}
|
|
410
|
+
// Note: .eslintignore generation removed in favor of eslint.config.js ignores
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { createCommand } from './create/index.js';
|
|
4
|
+
import { sampleCommand } from './sample.js';
|
|
5
|
+
const program = new Command();
|
|
6
|
+
program
|
|
7
|
+
.name('bricklayer')
|
|
8
|
+
.alias('bl')
|
|
9
|
+
.description('Interactive CLI to scaffold TypeScript CLI projects')
|
|
10
|
+
.version('0.0.1');
|
|
11
|
+
program.addCommand(createCommand());
|
|
12
|
+
program.addCommand(sampleCommand());
|
|
13
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
14
|
+
console.error('Error:', err);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
});
|
package/dist/sample.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export function sampleCommand() {
|
|
4
|
+
const cmd = new Command('sample');
|
|
5
|
+
cmd.description('A sample subcommand demonstrating project structure separation');
|
|
6
|
+
cmd.action(() => {
|
|
7
|
+
console.log(chalk.yellow('Running sample command...'));
|
|
8
|
+
console.log('This demonstrates a separated command file and a simple action.');
|
|
9
|
+
});
|
|
10
|
+
return cmd;
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tukuyomil032/bricklayer",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Interactive TypeScript CLI project scaffolder",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"bin": {
|
|
10
|
+
"bricklayer": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc -p tsconfig.json && chmod +x dist/index.js",
|
|
18
|
+
"prepare": "husky install && pnpm run build",
|
|
19
|
+
"prepublishOnly": "pnpm run build",
|
|
20
|
+
"dev": "ts-node --esm src/index.ts",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"lint": "eslint \"src/**/*.ts\"",
|
|
24
|
+
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
25
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
26
|
+
"format:check": "prettier --check \"src/**/*.ts\""
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"cli",
|
|
30
|
+
"scaffold",
|
|
31
|
+
"typescript",
|
|
32
|
+
"generator"
|
|
33
|
+
],
|
|
34
|
+
"author": "tukuyomil032",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/tukuyomil032/bricklayer.git"
|
|
39
|
+
},
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/tukuyomil032/bricklayer/issues"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/tukuyomil032/bricklayer#readme",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"chalk": "^5.3.0",
|
|
46
|
+
"cli-progress": "^3.12.0",
|
|
47
|
+
"commander": "^11.1.0",
|
|
48
|
+
"consola": "^3.4.2",
|
|
49
|
+
"enquirer": "^2.4.1",
|
|
50
|
+
"inquirer": "^9.2.11",
|
|
51
|
+
"ora": "^8.1.1",
|
|
52
|
+
"yargs": "^18.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@eslint/js": "^9.39.2",
|
|
56
|
+
"@eslint/json": "^0.14.0",
|
|
57
|
+
"@types/cli-progress": "^3.11.6",
|
|
58
|
+
"@types/inquirer": "^9.0.9",
|
|
59
|
+
"@types/node": "^22.10.5",
|
|
60
|
+
"@types/yargs": "^17.0.35",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.52.0",
|
|
62
|
+
"@typescript-eslint/parser": "^8.52.0",
|
|
63
|
+
"eslint": "^9.39.2",
|
|
64
|
+
"eslint-config-prettier": "^10.1.8",
|
|
65
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
66
|
+
"globals": "^17.1.0",
|
|
67
|
+
"husky": "^9.1.7",
|
|
68
|
+
"lint-staged": "^16.2.7",
|
|
69
|
+
"prettier": "^3.7.4",
|
|
70
|
+
"ts-node": "^10.9.1",
|
|
71
|
+
"typescript": "^5.7.2",
|
|
72
|
+
"typescript-eslint": "^8.53.1"
|
|
73
|
+
},
|
|
74
|
+
"lint-staged": {
|
|
75
|
+
"*.ts": [
|
|
76
|
+
"eslint --fix",
|
|
77
|
+
"prettier --write"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"packageManager": "pnpm@10.27.0"
|
|
81
|
+
}
|