boilerforge 1.0.2 → 1.2.0-dev.1

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.
Files changed (51) hide show
  1. package/dist/cli.js +13583 -993
  2. package/dist/templates/create-simple-app/package.json.hbs +30 -0
  3. package/dist/templates/create-simple-app/src/index.js.hbs +5 -0
  4. package/dist/templates/create-simple-app/src/index.ts.hbs +5 -0
  5. package/dist/templates/create-simple-app/tsconfig.json.hbs +14 -0
  6. package/package.json +27 -14
  7. package/{src/templates/create-node-app/resource/gitignore.ts → templates/create-simple-app/.gitignore.hbs} +1 -14
  8. package/templates/create-simple-app/.prettierrc.json.hbs +15 -0
  9. package/templates/create-simple-app/eslint.config.mjs.hbs +23 -0
  10. package/templates/create-simple-app/package.json.hbs +30 -0
  11. package/templates/create-simple-app/src/index.js.hbs +5 -0
  12. package/templates/create-simple-app/src/index.ts.hbs +5 -0
  13. package/templates/create-simple-app/tsconfig.json.hbs +14 -0
  14. package/.commitlintrc.json +0 -3
  15. package/.github/workflows/auto-pr-gen.yml +0 -25
  16. package/.github/workflows/enforce-pr-rules.yml +0 -28
  17. package/.github/workflows/npm-publish.yml +0 -17
  18. package/.github/workflows/release-changelog.yml +0 -28
  19. package/.husky/commit-msg +0 -4
  20. package/.husky/pre-push +0 -4
  21. package/.release-please-manifest.json +0 -3
  22. package/CHANGELOG.md +0 -37
  23. package/bin/cli.ts +0 -21
  24. package/esbuild.config.ts +0 -17
  25. package/prettier.config.mjs +0 -20
  26. package/release-please-config.json +0 -15
  27. package/src/config/cli-config.ts +0 -25
  28. package/src/lib/file.ts +0 -159
  29. package/src/lib/project.ts +0 -211
  30. package/src/lib/prompter.ts +0 -201
  31. package/src/lib/task.ts +0 -41
  32. package/src/templates/create-node-app/index.ts +0 -306
  33. package/src/templates/create-node-app/resource/editor-config.ts +0 -24
  34. package/src/templates/create-node-app/resource/eslint.ts +0 -62
  35. package/src/templates/create-node-app/resource/package-json.ts +0 -57
  36. package/src/templates/create-node-app/resource/prettier.ts +0 -45
  37. package/src/templates/create-node-app/resource/project-deps.ts +0 -30
  38. package/src/templates/create-node-app/resource/project-files.ts +0 -17
  39. package/src/templates/create-node-app/resource/tsconfig.ts +0 -20
  40. package/src/templates/index.ts +0 -1
  41. package/src/templates/utils/badges.ts +0 -13
  42. package/src/templates/utils/git.ts +0 -64
  43. package/src/templates/utils/package-manager.ts +0 -78
  44. package/src/templates/utils/readme.ts +0 -115
  45. package/src/utils/exec-cmd.ts +0 -80
  46. package/src/utils/index.ts +0 -60
  47. package/src/utils/logger.ts +0 -24
  48. package/tsconfig.json +0 -17
  49. /package/{eslint.config.mjs → dist/templates/create-simple-app/eslint.config.mjs.hbs} +0 -0
  50. /package/{.editorconfig → templates/create-simple-app/.editorconfig.hbs} +0 -0
  51. /package/{.prettierignore → templates/create-simple-app/.prettierignore.hbs} +0 -0
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "{{version}}",
4
+ "description": "{{description}}",
5
+ "author": "{{author}}",
6
+ "license": "ISC",
7
+ "main": "{{main}}",
8
+ {{#if scripts}}
9
+ "scripts": {
10
+ {{#each scripts}}
11
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
12
+ {{/each}}
13
+ },
14
+ {{/if}}
15
+ {{#if devDependencies}}
16
+ "devDependencies": {
17
+ {{#each devDependencies}}
18
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
19
+ {{/each}}
20
+ },
21
+ {{/if}}
22
+ {{#if dependencies}}
23
+ "dependencies": {
24
+ {{#each dependencies}}
25
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
26
+ {{/each}}
27
+ },
28
+ {{/if}}
29
+ "packageManager": "{{packageManager}}"
30
+ }
@@ -0,0 +1,5 @@
1
+ async function main() {
2
+ console.log('Hello from {{name}}');
3
+ }
4
+
5
+ main().catch((error) => console.error(error));
@@ -0,0 +1,5 @@
1
+ async function main() {
2
+ console.log('Hello from {{name}}');
3
+ }
4
+
5
+ main().catch((error) => console.error(error));
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2024",
4
+ "module": "commonjs",
5
+ "outDir": "./dist",
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "strict": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": [
12
+ "src"
13
+ ]
14
+ }
package/package.json CHANGED
@@ -1,17 +1,38 @@
1
1
  {
2
2
  "name": "boilerforge",
3
- "version": "1.0.2",
3
+ "version": "1.2.0-dev.1",
4
4
  "description": "✨ boilerforge is a blazing-fast CLI utility that scaffolds clean, ready-to-use project structures so you can skip the setup and start building instantly.",
5
- "main": "dist/",
5
+ "main": "dist/cli.js",
6
6
  "bin": {
7
7
  "boilerforge": "dist/cli.js"
8
8
  },
9
+ "files": [
10
+ "dist",
11
+ "templates",
12
+ "README.md"
13
+ ],
9
14
  "engines": {
10
15
  "node": ">= 20.11.1"
11
16
  },
17
+ "scripts": {
18
+ "clean": "rimraf dist",
19
+ "ci": "pnpm install --frozen-lockfile",
20
+ "build": "ts-node esbuild.config.ts",
21
+ "prebuild": "pnpm run clean && pnpm run lint && pnpm run format",
22
+ "start": "node dist/cli.js",
23
+ "lint": "eslint --ext .js,.ts .",
24
+ "format": "prettier --write \"**/*.+(js|ts)\"",
25
+ "test": "echo \"Error: no test specified\" && exit 1",
26
+ "dev": "ts-node bin/cli.ts",
27
+ "prepare": "husky"
28
+ },
12
29
  "keywords": [],
30
+ "publishConfig": {
31
+ "tag": "dev"
32
+ },
13
33
  "author": "tspyder7",
14
34
  "license": "MIT",
35
+ "packageManager": "pnpm@10.9.0",
15
36
  "devDependencies": {
16
37
  "@commitlint/cli": "^19.8.1",
17
38
  "@commitlint/config-conventional": "^19.8.1",
@@ -20,6 +41,7 @@
20
41
  "@typescript-eslint/eslint-plugin": "^8.31.0",
21
42
  "@typescript-eslint/parser": "^8.31.0",
22
43
  "esbuild": "^0.25.3",
44
+ "esbuild-plugin-copy": "^2.1.1",
23
45
  "eslint": "^9.25.1",
24
46
  "globals": "^16.0.0",
25
47
  "husky": "^9.1.7",
@@ -35,21 +57,12 @@
35
57
  "commander": "^13.1.0",
36
58
  "enquirer": "^2.4.1",
37
59
  "execa": "^9.5.2",
60
+ "globby": "^14.1.0",
61
+ "handlebars": "^4.7.8",
38
62
  "inquirer": "^12.6.1",
39
63
  "listr2": "^8.3.2",
40
64
  "remark-stringify": "^11.0.0",
41
65
  "unified": "^11.0.5",
42
66
  "unist-builder": "^4.0.0"
43
- },
44
- "scripts": {
45
- "clean": "rimraf dist",
46
- "ci": "pnpm install --frozen-lockfile",
47
- "build": "ts-node esbuild.config.ts",
48
- "prebuild": "pnpm run clean && pnpm run lint && pnpm run format",
49
- "start": "node dist/cli.js",
50
- "lint": "eslint --ext .js,.ts .",
51
- "format": "prettier --write \"**/*.+(js|ts)\"",
52
- "test": "echo \"Error: no test specified\" && exit 1",
53
- "dev": "ts-node bin/cli.ts"
54
67
  }
55
- }
68
+ }
@@ -1,6 +1,3 @@
1
- import { Resource } from '../../../lib/project';
2
-
3
- const gitignore = `
4
1
  # Logs
5
2
  logs
6
3
  *.log
@@ -141,15 +138,5 @@ dist
141
138
  # build or bundles
142
139
  build/**/*
143
140
 
144
- # Ignore built ts files
141
+ # Ignore built js files
145
142
  dist/**/*
146
- `;
147
-
148
- export const getGitIgnoreContent = (): Resource => {
149
- const filename = '.gitignore';
150
-
151
- return {
152
- filename,
153
- content: gitignore,
154
- };
155
- };
@@ -0,0 +1,15 @@
1
+ {
2
+ "printWidth": 80,
3
+ "tabWidth": 4,
4
+ "useTabs": false,
5
+ "semi": true,
6
+ "singleQuote": true,
7
+ "quoteProps": "as-needed",
8
+ "trailingComma": "all",
9
+ "arrowParens": "always",
10
+ "parser": "typescript",
11
+ "proseWrap": "always",
12
+ "endOfLine": "auto",
13
+ "embeddedLanguageFormatting": "auto",
14
+ "singleAttributePerLine": true
15
+ }
@@ -0,0 +1,23 @@
1
+ import js from "@eslint/js";
2
+ import globals from "globals";
3
+ import tseslint from "typescript-eslint";
4
+ import eslintPluginTs from '@typescript-eslint/eslint-plugin';
5
+ import { defineConfig } from "eslint/config";
6
+
7
+ export default defineConfig([
8
+ { files: ["**/*.{js,mjs,cjs,ts}"], plugins: { js }, extends: ["js/recommended"] },
9
+ { files: ["**/*.{js,mjs,cjs,ts}"], languageOptions: { globals: globals.node } },
10
+ tseslint.configs.recommended,
11
+ {
12
+ plugins: {
13
+ '@typescript-eslint': eslintPluginTs,
14
+ },
15
+ rules: {
16
+ "@typescript-eslint/no-namespace": "off",
17
+ "@typescript-eslint/no-empty-interface": "off",
18
+ "@typescript-eslint/no-empty-object-type": "off",
19
+ "@typescript-eslint/no-unused-expressions": "off"
20
+ }
21
+ },
22
+ { ignores: ["node_modules/*", "dist/*"] },
23
+ ]);
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "{{version}}",
4
+ "description": "{{description}}",
5
+ "author": "{{author}}",
6
+ "license": "ISC",
7
+ "main": "{{main}}",
8
+ {{#if scripts}}
9
+ "scripts": {
10
+ {{#each scripts}}
11
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
12
+ {{/each}}
13
+ },
14
+ {{/if}}
15
+ {{#if devDependencies}}
16
+ "devDependencies": {
17
+ {{#each devDependencies}}
18
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
19
+ {{/each}}
20
+ },
21
+ {{/if}}
22
+ {{#if dependencies}}
23
+ "dependencies": {
24
+ {{#each dependencies}}
25
+ "{{@key}}": "{{this}}"{{#unless @last}},{{/unless}}
26
+ {{/each}}
27
+ },
28
+ {{/if}}
29
+ "packageManager": "{{packageManager}}"
30
+ }
@@ -0,0 +1,5 @@
1
+ async function main() {
2
+ console.log('Hello from {{name}}');
3
+ }
4
+
5
+ main().catch((error) => console.error(error));
@@ -0,0 +1,5 @@
1
+ async function main() {
2
+ console.log('Hello from {{name}}');
3
+ }
4
+
5
+ main().catch((error) => console.error(error));
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2024",
4
+ "module": "commonjs",
5
+ "outDir": "./dist",
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "strict": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": [
12
+ "src"
13
+ ]
14
+ }
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["@commitlint/config-conventional"]
3
- }
@@ -1,25 +0,0 @@
1
- name: Generate Auto PR
2
-
3
- on:
4
- workflow_dispatch:
5
- push:
6
- branches:
7
- - development
8
-
9
- jobs:
10
- automatic-pr-generate:
11
- name: Use Generate Auto PR Workflow
12
- permissions:
13
- contents: write
14
- pull-requests: write
15
-
16
- uses: tspyder7/github-actions-lib/.github/workflows/auto-pr.yml@main
17
- with:
18
- pr-branch-hierarchy-json: |
19
- {
20
- "main": [
21
- "development"
22
- ]
23
- }
24
- secrets:
25
- GH_TOKEN: ${{ secrets.GH_REPO_TOKEN }}
@@ -1,28 +0,0 @@
1
- name: Enforce PR Rules
2
-
3
- on:
4
- pull_request:
5
- types:
6
- - opened
7
- - reopened
8
- - synchronize
9
- - edited
10
-
11
- jobs:
12
- enforce-pr-hierarchy:
13
- name: Use Enforce PR Hierarchy Workflow
14
- permissions:
15
- contents: write
16
- pull-requests: write
17
- uses: tspyder7/github-actions-lib/.github/workflows/enforce-pr-hierarchy.yml@main
18
- with:
19
- allowed-branches-hierarchy-json: |
20
- {
21
- "main": [
22
- "development",
23
- "release-please-.*",
24
- "hotfix/.*"
25
- ]
26
- }
27
- secrets:
28
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,17 +0,0 @@
1
- name: Release NPM Package
2
-
3
- on:
4
- push:
5
- tags:
6
- - '*'
7
-
8
- jobs:
9
- publish-package:
10
- name: Use NPM Publish Workflow
11
- uses: tspyder7/github-actions-lib/.github/workflows/npm-publish.yml@main
12
- with:
13
- node-version: "22"
14
- registry-url: "https://registry.npmjs.org/"
15
- package-manager: "pnpm"
16
- secrets:
17
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -1,28 +0,0 @@
1
- name: Release Changelog
2
-
3
- on:
4
- workflow_dispatch:
5
- push:
6
- branches:
7
- - main
8
-
9
- jobs:
10
- release-changelog:
11
- name: Use Release Please Workflow
12
- permissions:
13
- contents: write
14
- pull-requests: write
15
-
16
- runs-on: ubuntu-latest
17
- timeout-minutes: 10
18
- steps:
19
- - name: Checkout Code
20
- uses: actions/checkout@v4
21
-
22
- - name: Generate ChangeLog
23
- id: release-changelog
24
- uses: googleapis/release-please-action@v4
25
- with:
26
- token: ${{ secrets.GH_REPO_TOKEN }}
27
- config-file: release-please-config.json
28
- manifest-file: .release-please-manifest.json
package/.husky/commit-msg DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # perform commit linting
4
- pnpm exec commitlint --edit $1
package/.husky/pre-push DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # check formatting and linting
4
- pnpm run lint && pnpm run format
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.0.2"
3
- }
package/CHANGELOG.md DELETED
@@ -1,37 +0,0 @@
1
- # Changelog
2
-
3
- ## [1.0.2](https://github.com/tspyder7/boilerforge/compare/boilerforge-v1.0.1...boilerforge-v1.0.2) (2025-08-19)
4
-
5
-
6
- ### Bug Fixes
7
-
8
- * changed npm publish version and added mjs for prettier file ([#68](https://github.com/tspyder7/boilerforge/issues/68)) ([b977c77](https://github.com/tspyder7/boilerforge/commit/b977c77da6b092bad04cfb45eb27d46571bf88b0))
9
-
10
- ## [1.0.1](https://github.com/tspyder7/boilerforge/compare/boilerforge-v1.0.0...boilerforge-v1.0.1) (2025-08-19)
11
-
12
-
13
- ### Bug Fixes
14
-
15
- * fixed release please pull request header ([770c831](https://github.com/tspyder7/boilerforge/commit/770c831063090bb740c5c5112bf88a86a4378bdc))
16
-
17
- ## 1.0.0 (2025-08-19)
18
-
19
-
20
- ### Features
21
-
22
- * added cli configuration for boilerforge ([21ad40d](https://github.com/tspyder7/boilerforge/commit/21ad40d15e1a5d469ee518d8b206d64b02e7b732))
23
- * added esbuild config file and injected pkg version ([7a57867](https://github.com/tspyder7/boilerforge/commit/7a57867f4fbadf9ff681bfce558137c1fd0d0214))
24
- * added github workflow for npm publish ([e913309](https://github.com/tspyder7/boilerforge/commit/e91330943bdfb40dfc7e891bbbed75017073d00a))
25
- * added restrict pr source branch workflow to restrict any pr to main except development ([25005ad](https://github.com/tspyder7/boilerforge/commit/25005adbc075054b3b2904028f7dda46ec5bfff1))
26
- * added utils and helper classes ([3389187](https://github.com/tspyder7/boilerforge/commit/338918734dec2e2b33c036e66e6d328d5a45e00e))
27
- * create node app template ([739c233](https://github.com/tspyder7/boilerforge/commit/739c233e73825d7f9189a2887e62fc98a8d50dc9))
28
- * created cli for bolierforge ([2839e40](https://github.com/tspyder7/boilerforge/commit/2839e40b79787837a1caf6604fe30140134378d7))
29
- * pnpm, eslint & prettier ([62d211e](https://github.com/tspyder7/boilerforge/commit/62d211e1ddf09bdbe0e763c20b9305d2d96fed71))
30
- * template utilities ([4a72ba5](https://github.com/tspyder7/boilerforge/commit/4a72ba534a0e87c07e5bd540c80bafe6f4390a25))
31
-
32
-
33
- ### Bug Fixes
34
-
35
- * added missing release please manifest file ([6b8e0e5](https://github.com/tspyder7/boilerforge/commit/6b8e0e5e5ba5e53e38c9a87f5791716a3786fbfe))
36
- * disable release pull request ([a66ffac](https://github.com/tspyder7/boilerforge/commit/a66ffac5610e1f0d5838c65277b453f8de0eaee1))
37
- * fixed project name generation in lib ([430e982](https://github.com/tspyder7/boilerforge/commit/430e982743a62fbb44a98e80fe3bc67c80212daf))
package/bin/cli.ts DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { Command } from 'commander';
4
- import cliConfig from '../src/config/cli-config';
5
- import { CreateNodeApp } from '../src/templates';
6
-
7
- (async function () {
8
- const program = new Command();
9
- program
10
- .name(cliConfig.name)
11
- .description(cliConfig.description)
12
- .version(
13
- cliConfig.version,
14
- '-v, --version',
15
- 'output the version number',
16
- );
17
-
18
- new CreateNodeApp({ program });
19
-
20
- program.parse();
21
- })();
package/esbuild.config.ts DELETED
@@ -1,17 +0,0 @@
1
- // esbuild.config.ts
2
- import { build } from 'esbuild';
3
- import { readFileSync } from 'fs';
4
-
5
- const { version } = JSON.parse(readFileSync('package.json', 'utf-8'));
6
-
7
- build({
8
- entryPoints: ['bin/cli.ts'],
9
- outfile: 'dist/cli.js',
10
- bundle: true,
11
- platform: 'node',
12
- format: 'cjs',
13
- logLevel: 'info',
14
- define: {
15
- VERSION: JSON.stringify(version), // injects into runtime
16
- },
17
- }).catch(() => process.exit(1));
@@ -1,20 +0,0 @@
1
- /**
2
- * @type {import('prettier').Config}
3
- */
4
- const config = {
5
- printWidth: 80,
6
- tabWidth: 4,
7
- useTabs: false,
8
- semi: true,
9
- singleQuote: true,
10
- quoteProps: 'as-needed',
11
- trailingComma: 'all',
12
- arrowParens: 'always',
13
- parser: 'typescript',
14
- proseWrap: 'always',
15
- endOfLine: 'auto',
16
- embeddedLanguageFormatting: 'auto',
17
- singleAttributePerLine: true,
18
- };
19
-
20
- export default config;
@@ -1,15 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
- "release-type": "node",
4
- "packages": {
5
- ".": {
6
- "package-name": "boilerforge",
7
- "changelog-path": "CHANGELOG.md"
8
- }
9
- },
10
- "bump-minor-pre-major": true,
11
- "include-v-in-tag": true,
12
- "pull-request-title-pattern": "chore: release v${version}",
13
- "pull-request-header": "Release Notes",
14
- "separate-pull-requests": true
15
- }
@@ -1,25 +0,0 @@
1
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
- declare const VERSION: string;
3
-
4
- const runtimeVersion = typeof VERSION !== 'undefined' ? VERSION : '0.0.0-dev';
5
-
6
- type SemVersion =
7
- | `${number}.${number}.${number}`
8
- | `${number}.${number}.${number}-${string}`
9
- | `${number}.${number}.${number}+${string}`
10
- | `${number}.${number}.${number}-${string}+${string}`;
11
-
12
- type CLIConfiguration = {
13
- name: string;
14
- description: string;
15
- version: SemVersion;
16
- };
17
-
18
- const cliConfig: CLIConfiguration = {
19
- name: 'boilerforge',
20
- description:
21
- 'boilerforge is a blazing-fast CLI utility that scaffolds clean, ready-to-use project structures so you can skip the setup and start building instantly.',
22
- version: runtimeVersion as SemVersion,
23
- };
24
-
25
- export default cliConfig;