create-template-project 0.4.0 → 0.5.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.
@@ -15,8 +15,10 @@ jobs:
15
15
  - name: Use Node.js
16
16
  uses: actions/setup-node@v4
17
17
  with:
18
- node-version: '22.x'
19
- cache: '{{packageManager}}'
20
- - run: '{{installCommand}}'
18
+ node-version: "22.x"
19
+ cache: "{{packageManager}}"
20
+ - run: "{{installCommand}}"
21
21
  # [PLAYWRIGHT_SETUP]
22
- - run: '{{packageManager}} run ci'
22
+ - run: "{{packageManager}} run ci"
23
+ - name: Coveralls GitHub Action
24
+ uses: coverallsapp/github-action@v2
@@ -1,8 +1,9 @@
1
1
  # Agent Guidelines: {{projectName}}
2
2
 
3
3
  Build/Lint/Test:
4
- - `npm run ci`: Runs lint, build, and all tests.
5
- - `npm run dev`: Starts the development server.
6
- - `npm run test`: Runs unit tests (browser-based for web projects).
7
- - `npm run test:e2e`: Runs Playwright E2E tests.
8
- - `npx vitest <file>`: Runs a specific test file.
4
+ - `pnpm run ci`: Runs lint, build, and all tests.
5
+ - `pnpm run dev`: Starts the development server.
6
+ - `pnpm run test`: Runs unit tests (browser-based for web projects).
7
+ - `pnpm run test:e2e`: Runs Playwright E2E tests.
8
+ - `pnpm exec vitest <file>`: Runs a specific test file.
9
+ - `pnpm run lint`: Lints and formats the codebase (oxlint + oxfmt).
@@ -21,11 +21,11 @@ We follow the **Conventional Commits** specification. This is **enforced** by `c
21
21
 
22
22
  ## Release Process
23
23
 
24
- 1. **Verify**: `npm run ci`
25
- 2. **Bump Version**: `npm version <patch|minor|major> --no-git-tag-version`
26
- 3. **Update Changelog**: `npm run create-changelog`
24
+ 1. **Verify**: `pnpm run ci`
25
+ 2. **Bump Version**: `pnpm version <patch|minor|major> --no-git-tag-version`
26
+ 3. **Update Changelog**: `pnpm run create-changelog`
27
27
  4. **Commit**: `git add . && git commit -m "chore(release): $(node -p 'require("./package.json").version')"`
28
28
  5. **Tag & Push**: `git tag v$(node -p 'require("./package.json").version') && git push && git push --tags`
29
29
  6. **Create GitHub Release**: `gh release create v$(node -p 'require("./package.json").version') --generate-notes`
30
- 7. **Publish**: `npm publish`
30
+ 7. **Publish**: `pnpm publish`
31
31
 
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) {{year}} {{author}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -2,8 +2,10 @@
2
2
 
3
3
  {{description}}
4
4
 
5
- [![NPM Version](https://img.shields.io/npm/v/{{projectName}}.svg)](https://www.npmjs.com/package/{{projectName}})
6
- [![Node.js CI](https://github.com/doberkofler/{{projectName}}/actions/workflows/node.js.yml/badge.svg)](https://github.com/doberkofler/{{projectName}}/actions/workflows/node.js.yml)
5
+ [![npm version](https://img.shields.io/npm/v/{{projectName}}.svg)](https://www.npmjs.com/package/{{projectName}})
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![Node.js CI](https://github.com/{{githubUsername}}/{{projectName}}/actions/workflows/node.js.yml/badge.svg)](https://github.com/{{githubUsername}}/{{projectName}}/actions/workflows/node.js.yml)
8
+ [![Coverage Status](https://coveralls.io/repos/github/{{githubUsername}}/{{projectName}}/badge.svg?branch=main)](https://coveralls.io/github/{{githubUsername}}/{{projectName}}?branch=main)
7
9
 
8
10
  ## Development Workflow
9
11
 
@@ -11,28 +13,28 @@ This project is built using **Vite 8** for high-performance development and bund
11
13
 
12
14
  ### Available Scripts
13
15
 
14
- - `npm run dev`: Starts the development server.
15
- - `npm run build`: Builds the project for production.
16
- - `npm run preview`: Previews the production build.
17
- - `npm run test`: Runs the unit test suite (browser-based for web targets using **Vitest** and **Playwright**).
18
- - `npm run test:e2e`: Runs E2E tests using **Playwright**.
19
- - `npm run lint`: Lints and formats the codebase using **oxlint** and **prettier**.
20
- - `npm run ci`: Full CI pipeline (lint, build, test).
16
+ - `pnpm run dev`: Starts the development server.
17
+ - `pnpm run build`: Builds the project for production.
18
+ - `pnpm run preview`: Previews the production build.
19
+ - `pnpm run test`: Runs the unit test suite (browser-based for web targets using **Vitest** and **Playwright**).
20
+ - `pnpm run test:e2e`: Runs E2E tests using **Playwright**.
21
+ - `pnpm run lint`: Lints and formats the codebase using **oxlint** and **oxfmt**.
22
+ - `pnpm run ci`: Full CI pipeline (lint, build, test).
21
23
 
22
24
  ## Getting Started
23
25
 
24
26
  1. **Install dependencies**:
25
27
  ```bash
26
- npm install
28
+ pnpm install
27
29
  ```
28
30
  2. **Start development server**:
29
31
  ```bash
30
- npm run dev
32
+ pnpm run dev
31
33
  ```
32
34
  3. **Run tests**:
33
35
  ```bash
34
- npm run test
35
- npm run test:e2e
36
+ pnpm run test
37
+ pnpm run test:e2e
36
38
  ```
37
39
 
38
40
  ## Tooling
@@ -41,6 +43,6 @@ This project is built using **Vite 8** for high-performance development and bund
41
43
  - **Vitest**: Vite-native testing framework with browser support.
42
44
  - **Playwright**: Reliable E2E and browser automation.
43
45
  - **oxlint**: Extremely fast JavaScript/TypeScript linter.
44
- - **Prettier**: Opinionated code formatter.
46
+ - **oxfmt**: High performance JavaScript / TypeScript formatter.
45
47
  - **Husky & Commitlint**: Ensuring high-quality commit messages.
46
48
  - **Conventional Changelog**: Automated changelog generation.
@@ -0,0 +1,95 @@
1
+ import { defineConfig } from "oxlint";
2
+ import pluginRegexp from "eslint-plugin-regexp";
3
+
4
+ const commonIgnore = [
5
+ "**/.*",
6
+ "node_modules/**",
7
+ "dist/**",
8
+ "build/**",
9
+ "coverage/**",
10
+ "temp/**",
11
+ "public/**",
12
+ "**/*.md",
13
+ ];
14
+
15
+ export const linter = defineConfig({
16
+ options: {
17
+ typeAware: true,
18
+ typeCheck: true,
19
+ },
20
+ plugins: [
21
+ "unicorn",
22
+ "typescript",
23
+ "oxc",
24
+ "import",
25
+ "react",
26
+ "jsdoc",
27
+ "promise",
28
+ "vitest",
29
+ ],
30
+ jsPlugins: ["eslint-plugin-regexp"],
31
+ categories: {
32
+ correctness: "error",
33
+ },
34
+ rules: {
35
+ ...pluginRegexp.configs.recommended.rules,
36
+ curly: ["error", "all"],
37
+ "typescript/no-unused-vars": [
38
+ "error",
39
+ {
40
+ caughtErrors: "none",
41
+ argsIgnorePattern: "^_",
42
+ },
43
+ ],
44
+ },
45
+ settings: {
46
+ "jsx-a11y": {
47
+ polymorphicPropName: undefined,
48
+ components: {},
49
+ attributes: {},
50
+ },
51
+ next: {
52
+ rootDir: [],
53
+ },
54
+ react: {
55
+ formComponents: [],
56
+ linkComponents: [],
57
+ version: undefined,
58
+ },
59
+ jsdoc: {
60
+ ignorePrivate: false,
61
+ ignoreInternal: false,
62
+ ignoreReplacesDocs: true,
63
+ overrideReplacesDocs: true,
64
+ augmentsExtendsReplacesDocs: false,
65
+ implementsReplacesDocs: false,
66
+ exemptDestructuredRootsFromChecks: false,
67
+ tagNamePreference: {},
68
+ },
69
+ vitest: {
70
+ typecheck: false,
71
+ },
72
+ },
73
+ env: {
74
+ builtin: true,
75
+ },
76
+ globals: {},
77
+ ignorePatterns: commonIgnore,
78
+ });
79
+
80
+ export const formatter = {
81
+ printWidth: 160,
82
+ embeddedLanguageFormatting: "off",
83
+ useTabs: true,
84
+ singleQuote: true,
85
+ bracketSpacing: false,
86
+ ignorePatterns: commonIgnore,
87
+ overrides: [
88
+ {
89
+ files: ["src/**/*.{scss,css}"],
90
+ options: {
91
+ singleQuote: false,
92
+ },
93
+ },
94
+ ],
95
+ };
@@ -0,0 +1,2 @@
1
+ import { formatter } from "./oxc.config.ts";
2
+ export default formatter;
@@ -1,58 +1,2 @@
1
- import {defineConfig} from 'oxlint';
2
- import pluginRegexp from 'eslint-plugin-regexp';
3
-
4
- export default defineConfig({
5
- options: {
6
- typeAware: true,
7
- typeCheck: true,
8
- },
9
- plugins: ['unicorn', 'typescript', 'oxc', 'import', 'react', 'jsdoc', 'promise', 'vitest'],
10
- jsPlugins: ['eslint-plugin-regexp'],
11
- categories: {
12
- correctness: 'error',
13
- },
14
- rules: {
15
- ...pluginRegexp.configs.recommended.rules,
16
- curly: ['error', 'all'],
17
- 'typescript/no-unused-vars': [
18
- 'error',
19
- {
20
- caughtErrors: 'none',
21
- argsIgnorePattern: '^_',
22
- },
23
- ],
24
- },
25
- settings: {
26
- 'jsx-a11y': {
27
- polymorphicPropName: undefined,
28
- components: {},
29
- attributes: {},
30
- },
31
- next: {
32
- rootDir: [],
33
- },
34
- react: {
35
- formComponents: [],
36
- linkComponents: [],
37
- version: undefined,
38
- },
39
- jsdoc: {
40
- ignorePrivate: false,
41
- ignoreInternal: false,
42
- ignoreReplacesDocs: true,
43
- overrideReplacesDocs: true,
44
- augmentsExtendsReplacesDocs: false,
45
- implementsReplacesDocs: false,
46
- exemptDestructuredRootsFromChecks: false,
47
- tagNamePreference: {},
48
- },
49
- vitest: {
50
- typecheck: false,
51
- },
52
- },
53
- env: {
54
- builtin: true,
55
- },
56
- globals: {},
57
- ignorePatterns: ['**/.*', 'node_modules/**', 'dist/**', 'coverage/**', 'public/**'],
58
- });
1
+ import { linter } from "./oxc.config.ts";
2
+ export default linter;
@@ -1,32 +1,32 @@
1
1
  {
2
- "name": "{{projectName}}",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "scripts": {
6
- "lint": "tsc && oxlint -c oxlint.config.ts && npm run prettier",
7
- "prettier": "prettier --check .",
8
- "prettier-write": "prettier --write .",
9
- "test": "vitest run --coverage",
10
- "ci": "npm run lint && npm run build && npm run test",
11
- "create-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
12
- "prepare": "husky"
13
- },
14
- "dependencies": {
15
- "debug": ""
16
- },
17
- "devDependencies": {
18
- "@commitlint/cli": "",
19
- "@commitlint/config-conventional": "",
20
- "@types/debug": "",
21
- "@types/node": "",
22
- "@vitest/coverage-v8": "",
23
- "conventional-changelog": "",
24
- "husky": "",
25
- "oxlint": "",
26
- "oxlint-tsgolint": "",
27
- "eslint-plugin-regexp": "",
28
- "prettier": "",
29
- "typescript": "",
30
- "vitest": ""
31
- }
2
+ "name": "{{projectName}}",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "lint": "tsc && oxlint --disable-nested-config src client server tests *.config.ts && npm run format:check",
7
+ "format": "oxfmt --write .",
8
+ "format:check": "oxfmt --check .",
9
+ "test": "vitest run --coverage",
10
+ "ci": "npm run lint && npm run build && npm run test",
11
+ "create-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
12
+ "prepare": "husky"
13
+ },
14
+ "dependencies": {
15
+ "debug": ""
16
+ },
17
+ "devDependencies": {
18
+ "@commitlint/cli": "",
19
+ "@commitlint/config-conventional": "",
20
+ "@types/debug": "",
21
+ "@types/node": "",
22
+ "@vitest/coverage-v8": "",
23
+ "conventional-changelog": "",
24
+ "husky": "",
25
+ "oxlint": "",
26
+ "oxlint-tsgolint": "",
27
+ "oxfmt": "",
28
+ "eslint-plugin-regexp": "",
29
+ "typescript": "",
30
+ "vitest": ""
31
+ }
32
32
  }
package/package.json CHANGED
@@ -1,77 +1,95 @@
1
1
  {
2
- "name": "create-template-project",
3
- "version": "0.4.0",
4
- "type": "module",
5
- "license": "MIT",
6
- "author": "Dieter Oberkofler",
7
- "files": [
8
- "dist"
9
- ],
10
- "keywords": [
11
- "scaffold",
12
- "template",
13
- "cli",
14
- "typescript"
15
- ],
16
- "bin": {
17
- "create-template-project": "./dist/index.js"
18
- },
19
- "scripts": {
20
- "run-interactive": "node dist/index.js interactive",
21
- "build": "vite build && node scripts/copy-templates.ts",
22
- "dependencies-check": "node scripts/dependencies.ts",
23
- "dependencies-update": "node scripts/dependencies.ts --update",
24
- "lint": "tsc && oxlint --ignore-pattern \"src/templates/**/files\" && pnpm run prettier",
25
- "prettier": "prettier --check .",
26
- "prettier-write": "prettier --write .",
27
- "test": "vitest run --coverage --exclude '**/*.integration.*.test.ts'",
28
- "test:integration:cli": "node dist/index.js create --name=my-cli --directory=./temp --template=cli --overwrite --package-manager=pnpm --build --debug --no-progress",
29
- "test:integration:web-vanilla": "node dist/index.js create --name=my-web-vanilla --directory=./temp --template=web-vanilla --package-manager=pnpm --overwrite --build --debug --no-progress",
30
- "test:integration:web-app": "node dist/index.js create --name=my-web-app --directory=./temp --template=web-app --package-manager=pnpm --overwrite --build --debug --no-progress",
31
- "test:integration:web-fullstack": "node dist/index.js create --name=my-web-fullstack --directory=./temp --template=web-fullstack --package-manager=pnpm --overwrite --build --debug --no-progress",
32
- "test:integration": "pnpm run test:integration:cli && pnpm run test:integration:web-vanilla && pnpm run test:integration:web-app && pnpm run test:integration:web-fullstack",
33
- "ci": "pnpm run lint && pnpm run build && pnpm run test",
34
- "create-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
35
- "prepare": "husky"
36
- },
37
- "main": "./dist/index.js",
38
- "module": "./dist/index.js",
39
- "types": "./dist/index.d.ts",
40
- "exports": {
41
- ".": "./dist/index.js",
42
- "./package.json": "./package.json"
43
- },
44
- "engines": {
45
- "node": ">=22"
46
- },
47
- "repository": {
48
- "type": "git",
49
- "url": "git://github.com/doberkofler/create-template-project.git"
50
- },
51
- "homepage": "https://github.com/doberkofler/create-template-project#readme",
52
- "devDependencies": {
53
- "@commitlint/cli": "20.5.0",
54
- "@commitlint/config-conventional": "20.5.0",
55
- "@types/cli-progress": "3.11.6",
56
- "@types/debug": "4.1.13",
57
- "@vitest/coverage-v8": "4.1.0",
58
- "conventional-changelog": "7.2.0",
59
- "conventional-changelog-angular": "8.3.0",
60
- "eslint-plugin-regexp": "3.1.0",
61
- "husky": "9.1.7",
62
- "oxlint": "1.56.0",
63
- "oxlint-tsgolint": "0.17.1",
64
- "pnpm": "10.32.1",
65
- "prettier": "3.8.1",
66
- "typescript": "5.9.3",
67
- "vite": "8.0.1",
68
- "vitest": "4.1.0"
69
- },
70
- "dependencies": {
71
- "@clack/prompts": "1.1.0",
72
- "commander": "14.0.3",
73
- "debug": "4.4.3",
74
- "execa": "9.6.1",
75
- "zod": "4.3.6"
76
- }
2
+ "name": "create-template-project",
3
+ "version": "0.5.0",
4
+ "description": "An ultra-modular, type-safe Node.js CLI tool used to scaffold new project templates (CLI, Webpage, Webapp, Fullstack) with best-practice configurations pre-installed.",
5
+ "keywords": [
6
+ "boilerplate",
7
+ "cli",
8
+ "dependencies",
9
+ "express",
10
+ "generator",
11
+ "maintenance",
12
+ "monorepo",
13
+ "npm",
14
+ "react",
15
+ "scaffold",
16
+ "scaffolding",
17
+ "security",
18
+ "template",
19
+ "trpc",
20
+ "typescript",
21
+ "vite",
22
+ "vulnerability"
23
+ ],
24
+ "homepage": "https://github.com/doberkofler/create-template-project#readme",
25
+ "bugs": {
26
+ "url": "https://github.com/doberkofler/create-template-project/issues"
27
+ },
28
+ "license": "MIT",
29
+ "author": "Dieter Oberkofler",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/doberkofler/create-template-project.git"
33
+ },
34
+ "bin": {
35
+ "create-template-project": "./dist/index.js"
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "type": "module",
41
+ "main": "./dist/index.js",
42
+ "module": "./dist/index.js",
43
+ "types": "./dist/index.d.ts",
44
+ "exports": {
45
+ ".": "./dist/index.js",
46
+ "./package.json": "./package.json"
47
+ },
48
+ "scripts": {
49
+ "run-interactive": "node ./dist/index.js interactive",
50
+ "build": "vite build && node scripts/copy-templates.ts",
51
+ "dependencies-check": "node scripts/dependencies.ts",
52
+ "dependencies-update": "node scripts/dependencies.ts --update",
53
+ "lint": "tsc && oxlint --disable-nested-config src scripts *.config.ts && pnpm run format:check",
54
+ "format": "oxfmt --write src scripts *.config.ts",
55
+ "format:check": "oxfmt --check src scripts *.config.ts",
56
+ "test": "vitest run --coverage --exclude '**/*.integration.*.test.ts'",
57
+ "integration-test:cli": "rimraf ./temp/cli && node ./dist/index.js create --package-manager=pnpm --build --debug --no-progress --template=cli --name=cli --author=\"Jon Doe\" --github-username=\"jon-doe\" --path=./temp/cli",
58
+ "integration-test:web-vanilla": "rimraf ./temp/web-vanilla && node ./dist/index.js create --package-manager=pnpm --build --debug --no-progress --template=web-vanilla --name=web-vanilla --author=\"Jon Doe\" --github-username=\"jon-doe\" --path=./temp/web-vanilla",
59
+ "integration-test:web-app": "rimraf ./temp/web-app && node ./dist/index.js create --package-manager=pnpm --build --debug --no-progress --template=web-app --name=web-app --author=\"Jon Doe\" --github-username=\"jon-doe\" --path=./temp/web-app",
60
+ "integration-test:web-fullstack": "rimraf ./temp/web-fullstack && node ./dist/index.js create --package-manager=pnpm --build --debug --no-progress --template=web-fullstack --name=web-fullstack --author=\"Jon Doe\" --github-username=\"jon-doe\" --path=./temp/web-fullstack",
61
+ "integration-test:all": "pnpm run integration-test:cli && pnpm run integration-test:web-vanilla && pnpm run integration-test:web-app && pnpm run integration-test:web-fullstack",
62
+ "ci": "pnpm run lint && pnpm run build && pnpm run test",
63
+ "create-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
64
+ "prepare": "husky"
65
+ },
66
+ "dependencies": {
67
+ "@clack/prompts": "1.1.0",
68
+ "commander": "14.0.3",
69
+ "debug": "4.4.3",
70
+ "execa": "9.6.1",
71
+ "zod": "4.3.6"
72
+ },
73
+ "devDependencies": {
74
+ "@commitlint/cli": "20.5.0",
75
+ "@commitlint/config-conventional": "20.5.0",
76
+ "@types/cli-progress": "3.11.6",
77
+ "@types/debug": "4.1.13",
78
+ "@vitest/coverage-v8": "4.1.1",
79
+ "conventional-changelog": "7.2.0",
80
+ "conventional-changelog-angular": "8.3.0",
81
+ "eslint-plugin-regexp": "3.1.0",
82
+ "husky": "9.1.7",
83
+ "oxfmt": "0.41.0",
84
+ "oxlint": "1.56.0",
85
+ "oxlint-tsgolint": "0.17.1",
86
+ "pnpm": "10.32.1",
87
+ "rimraf": "6.1.3",
88
+ "typescript": "5.9.3",
89
+ "vite": "8.0.2",
90
+ "vitest": "4.1.1"
91
+ },
92
+ "engines": {
93
+ "node": ">=22"
94
+ }
77
95
  }
@@ -1,53 +0,0 @@
1
- # dependencies
2
- node_modules/
3
-
4
- # build outputs
5
- dist/
6
- build/
7
- coverage/
8
- out/
9
- .next/
10
- .nuxt/
11
- .svelte-kit/
12
-
13
- # logs
14
- *.log
15
- npm-debug.log*
16
- yarn-debug.log*
17
- yarn-error.log*
18
- pnpm-debug.log*
19
-
20
- # env
21
- .env
22
- .env.*.local
23
-
24
- # cache
25
- .cache/
26
- .parcel-cache/
27
- .eslintcache
28
-
29
- # lock files (optional, usually formatted fine)
30
- package-lock.json
31
- yarn.lock
32
- pnpm-lock.yaml
33
-
34
- # generated files
35
- *.min.js
36
- *.min.css
37
-
38
- # static assets (optional)
39
- public/
40
- assets/
41
-
42
- # IDE / OS
43
- .vscode/
44
- .idea/
45
- .DS_Store
46
- Thumbs.db
47
-
48
- # misc
49
- tmp/
50
- temp/
51
-
52
- # md
53
- **/*.md
@@ -1,8 +0,0 @@
1
- {
2
- "printWidth": 160,
3
- "embeddedLanguageFormatting": "off",
4
- "useTabs": true,
5
- "singleQuote": true,
6
- "bracketSpacing": false,
7
- "endOfLine": "auto"
8
- }