@reasonabletech/config-typescript 0.1.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 +81 -0
- package/docs/README.md +18 -0
- package/docs/api/base-config.md +79 -0
- package/docs/guides/migration.md +47 -0
- package/docs/guides/usage-guide.md +87 -0
- package/examples/README.md +60 -0
- package/examples/base-config.ts +46 -0
- package/examples/react-app-config.ts +64 -0
- package/lib/app.json +10 -0
- package/lib/base.json +35 -0
- package/lib/browser-library.json +7 -0
- package/lib/chrome-extension.json +8 -0
- package/lib/docs.json +7 -0
- package/lib/eslint.json +10 -0
- package/lib/library.json +7 -0
- package/lib/nextjs.json +21 -0
- package/lib/platform-library.json +10 -0
- package/lib/react-app.json +14 -0
- package/lib/react-library.json +9 -0
- package/lib/server.json +12 -0
- package/lib/strict.json +12 -0
- package/lib/tooling.json +4 -0
- package/lib/vscode-extension.json +8 -0
- package/package.json +65 -0
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# @reasonabletech/config-typescript
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@reasonabletech/config-typescript)
|
|
4
|
+
[](https://www.npmjs.com/package/@reasonabletech/config-typescript)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
|
|
8
|
+
`@reasonabletech/config-typescript` provides shared `tsconfig` presets for applications, libraries, tooling, and extension packages. All presets build on a strict base that enables `noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, and modern `Bundler` module resolution — options that catch more bugs at compile time than TypeScript's default settings.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pnpm add -D @reasonabletech/config-typescript typescript
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
| Dependency | Version | Required |
|
|
19
|
+
| ---------- | --------- | -------- |
|
|
20
|
+
| typescript | >= 5.0 | Yes |
|
|
21
|
+
|
|
22
|
+
This package provides TypeScript configuration presets and requires TypeScript 5.0+ for full compatibility with modern `compilerOptions` and module resolution settings.
|
|
23
|
+
|
|
24
|
+
## Exported Entry Points
|
|
25
|
+
|
|
26
|
+
This package exports JSON presets via subpath imports:
|
|
27
|
+
|
|
28
|
+
- `@reasonabletech/config-typescript/<preset>.json`
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### Application Example
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"extends": "@reasonabletech/config-typescript/app.json"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Library Example
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"extends": "@reasonabletech/config-typescript/library.json",
|
|
45
|
+
"compilerOptions": {
|
|
46
|
+
"outDir": "dist"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Available Presets
|
|
52
|
+
|
|
53
|
+
| Preset | Intended Use |
|
|
54
|
+
| --------------------------------------------------------- | -------------------------------------------------------- |
|
|
55
|
+
| `@reasonabletech/config-typescript/base.json` | Base strict TypeScript defaults for NodeNext projects |
|
|
56
|
+
| `@reasonabletech/config-typescript/app.json` | General application projects with `@/*` path alias |
|
|
57
|
+
| `@reasonabletech/config-typescript/library.json` | Libraries that emit declarations only |
|
|
58
|
+
| `@reasonabletech/config-typescript/browser-library.json` | Browser-targeted libraries with DOM libs |
|
|
59
|
+
| `@reasonabletech/config-typescript/platform-library.json` | Platform libraries with React/Next-related ambient types |
|
|
60
|
+
| `@reasonabletech/config-typescript/react-app.json` | React applications with JSX and `noEmit` |
|
|
61
|
+
| `@reasonabletech/config-typescript/react-library.json` | React libraries with JSX settings |
|
|
62
|
+
| `@reasonabletech/config-typescript/nextjs.json` | Next.js applications with bundler module resolution |
|
|
63
|
+
| `@reasonabletech/config-typescript/server.json` | Server applications with decorators and `@/*` path alias |
|
|
64
|
+
| `@reasonabletech/config-typescript/chrome-extension.json` | Chrome extension packages |
|
|
65
|
+
| `@reasonabletech/config-typescript/vscode-extension.json` | VS Code extension packages |
|
|
66
|
+
| `@reasonabletech/config-typescript/tooling.json` | Tooling scripts and build utilities |
|
|
67
|
+
| `@reasonabletech/config-typescript/eslint.json` | TypeScript settings for ESLint integration |
|
|
68
|
+
| `@reasonabletech/config-typescript/strict.json` | Additional strictness beyond `base.json` |
|
|
69
|
+
| `@reasonabletech/config-typescript/docs.json` | Documentation-focused TypeScript settings |
|
|
70
|
+
|
|
71
|
+
## Changelog
|
|
72
|
+
|
|
73
|
+
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
74
|
+
|
|
75
|
+
This package follows [Semantic Versioning](https://semver.org/). Breaking changes are documented with migration guides when applicable.
|
|
76
|
+
|
|
77
|
+
## Additional References
|
|
78
|
+
|
|
79
|
+
- [Usage Guide](./docs/guides/usage-guide.md)
|
|
80
|
+
- [Package Docs](./docs/README.md)
|
|
81
|
+
- [Base Config Details](./docs/api/base-config.md)
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# @reasonabletech/config-typescript Documentation
|
|
2
|
+
|
|
3
|
+
Reference documentation for shared TypeScript presets in the core-utils monorepo.
|
|
4
|
+
|
|
5
|
+
## Start Here
|
|
6
|
+
|
|
7
|
+
- [Usage Guide](./guides/usage-guide.md)
|
|
8
|
+
|
|
9
|
+
## API Reference
|
|
10
|
+
|
|
11
|
+
- [Base Configuration](./api/base-config.md)
|
|
12
|
+
|
|
13
|
+
## Monorepo Context
|
|
14
|
+
|
|
15
|
+
- [Package README](../README.md)
|
|
16
|
+
- [Architecture](../../../docs/architecture.md) — How packages relate
|
|
17
|
+
- [Tooling](../../../docs/tooling.md) — Turbo, Changesets details
|
|
18
|
+
- [Contributing](../../../CONTRIBUTING.md)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# TypeScript Presets API Reference
|
|
2
|
+
|
|
3
|
+
This package publishes TypeScript presets as JSON config files.
|
|
4
|
+
|
|
5
|
+
## How To Use
|
|
6
|
+
|
|
7
|
+
Use one preset in your `tsconfig.json` `extends`:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"extends": "@reasonabletech/config-typescript/base.json"
|
|
12
|
+
}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
All presets are exported with a `.json` suffix.
|
|
16
|
+
|
|
17
|
+
## Preset Catalog
|
|
18
|
+
|
|
19
|
+
| Preset | Extends | Highlights |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `base.json` | — | ES2022 target, `module: NodeNext`, strict mode, declaration/source maps, incremental builds |
|
|
22
|
+
| `app.json` | `base.json` | App-friendly path alias default: `@/* -> src/*` |
|
|
23
|
+
| `library.json` | `base.json` | Library default `emitDeclarationOnly: true` |
|
|
24
|
+
| `react-app.json` | `base.json` | React app defaults (`jsx: react-jsx`, DOM libs, `noEmit: true`) |
|
|
25
|
+
| `react-library.json` | `base.json` | React library defaults (DOM libs, JSX transform/import source) |
|
|
26
|
+
| `nextjs.json` | `base.json` | Next.js defaults (`module: ESNext`, `moduleResolution: bundler`, Next plugin, `noEmit: true`) |
|
|
27
|
+
| `server.json` | `base.json` | Node service defaults with decorator metadata and app-style path alias |
|
|
28
|
+
| `browser-library.json` | `base.json` | Browser lib target (`ES2023`, DOM libs) |
|
|
29
|
+
| `platform-library.json` | `base.json` | Platform package baseline with React/Next/Node type sets |
|
|
30
|
+
| `chrome-extension.json` | `base.json` | Chrome extension type surface (`chrome`, `node`) |
|
|
31
|
+
| `vscode-extension.json` | `base.json` | VS Code extension type surface (`vscode`, `node`) |
|
|
32
|
+
| `eslint.json` | `base.json` | ESLint authoring preset (`emitDeclarationOnly`, include/exclude defaults) |
|
|
33
|
+
| `docs.json` | `base.json` | Documentation-focused preset (`skipLibCheck: false`) |
|
|
34
|
+
| `tooling.json` | `base.json` | Tooling/script projects with base strict defaults |
|
|
35
|
+
| `strict.json` | `base.json` | Extra strictness (`exactOptionalPropertyTypes`, indexed-access checks, override guards) |
|
|
36
|
+
|
|
37
|
+
## Common Usage Patterns
|
|
38
|
+
|
|
39
|
+
### Application
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"extends": "@reasonabletech/config-typescript/app.json",
|
|
44
|
+
"compilerOptions": {
|
|
45
|
+
"outDir": "./dist"
|
|
46
|
+
},
|
|
47
|
+
"include": ["src/**/*"]
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Library
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"extends": "@reasonabletech/config-typescript/library.json",
|
|
56
|
+
"compilerOptions": {
|
|
57
|
+
"outDir": "./dist",
|
|
58
|
+
"rootDir": "./src"
|
|
59
|
+
},
|
|
60
|
+
"include": ["src/**/*"]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Strict Variant
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"extends": "@reasonabletech/config-typescript/strict.json"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Source of Truth
|
|
73
|
+
|
|
74
|
+
Preset implementations live under:
|
|
75
|
+
|
|
76
|
+
- `packages/config-typescript/lib/base.json`
|
|
77
|
+
- `packages/config-typescript/lib/*.json`
|
|
78
|
+
|
|
79
|
+
Review those files for exact compiler option values.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Migration Guide
|
|
2
|
+
|
|
3
|
+
This guide documents breaking changes and how to migrate between major versions of @reasonabletech/config-typescript.
|
|
4
|
+
|
|
5
|
+
## Current Version
|
|
6
|
+
|
|
7
|
+
The current major version is **0.x** (pre-1.0). The API is stabilizing but may have breaking changes before 1.0.
|
|
8
|
+
|
|
9
|
+
## Future Migration Notes
|
|
10
|
+
|
|
11
|
+
_No breaking changes documented yet. This section will be updated when breaking changes are released._
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Migration Template
|
|
16
|
+
|
|
17
|
+
When documenting a breaking change, use this structure:
|
|
18
|
+
|
|
19
|
+
### Migrating from X.x to Y.0
|
|
20
|
+
|
|
21
|
+
#### Breaking Changes
|
|
22
|
+
|
|
23
|
+
1. **Change description** - Brief explanation of what changed
|
|
24
|
+
|
|
25
|
+
**Before:**
|
|
26
|
+
```typescript
|
|
27
|
+
// Old usage
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**After:**
|
|
31
|
+
```typescript
|
|
32
|
+
// New usage
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
2. **Another change** - Description
|
|
36
|
+
|
|
37
|
+
#### Deprecations
|
|
38
|
+
|
|
39
|
+
- `oldFunction()` is deprecated in favor of `newFunction()`
|
|
40
|
+
|
|
41
|
+
#### New Features
|
|
42
|
+
|
|
43
|
+
- Feature description
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
_Last updated: [date]_
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# @reasonabletech/config-typescript Usage Guide
|
|
2
|
+
|
|
3
|
+
This guide covers canonical setup for TypeScript presets in greenfield packages and apps.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add -D @reasonabletech/config-typescript typescript
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"extends": "@reasonabletech/config-typescript/base.json"
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Choose the Right Preset
|
|
20
|
+
|
|
21
|
+
### Application Presets
|
|
22
|
+
|
|
23
|
+
- `@reasonabletech/config-typescript/app.json`
|
|
24
|
+
- `@reasonabletech/config-typescript/react-app.json`
|
|
25
|
+
- `@reasonabletech/config-typescript/nextjs.json`
|
|
26
|
+
- `@reasonabletech/config-typescript/server.json`
|
|
27
|
+
|
|
28
|
+
### Library Presets
|
|
29
|
+
|
|
30
|
+
- `@reasonabletech/config-typescript/library.json`
|
|
31
|
+
- `@reasonabletech/config-typescript/react-library.json`
|
|
32
|
+
- `@reasonabletech/config-typescript/browser-library.json`
|
|
33
|
+
- `@reasonabletech/config-typescript/platform-library.json`
|
|
34
|
+
|
|
35
|
+
### Specialized Presets
|
|
36
|
+
|
|
37
|
+
- `@reasonabletech/config-typescript/chrome-extension.json`
|
|
38
|
+
- `@reasonabletech/config-typescript/vscode-extension.json`
|
|
39
|
+
- `@reasonabletech/config-typescript/tooling.json`
|
|
40
|
+
- `@reasonabletech/config-typescript/eslint.json`
|
|
41
|
+
- `@reasonabletech/config-typescript/strict.json`
|
|
42
|
+
- `@reasonabletech/config-typescript/docs.json`
|
|
43
|
+
|
|
44
|
+
## Configuration Examples
|
|
45
|
+
|
|
46
|
+
### React App
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"extends": "@reasonabletech/config-typescript/react-app.json",
|
|
51
|
+
"compilerOptions": {
|
|
52
|
+
"baseUrl": "."
|
|
53
|
+
},
|
|
54
|
+
"include": ["src"]
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Library
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"extends": "@reasonabletech/config-typescript/library.json",
|
|
63
|
+
"compilerOptions": {
|
|
64
|
+
"outDir": "dist"
|
|
65
|
+
},
|
|
66
|
+
"include": ["src"]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Troubleshooting
|
|
71
|
+
|
|
72
|
+
### `extends` cannot be resolved
|
|
73
|
+
|
|
74
|
+
Ensure the package is installed in the same workspace/project where `tsconfig.json` is evaluated.
|
|
75
|
+
|
|
76
|
+
### Incompatible runtime module resolution
|
|
77
|
+
|
|
78
|
+
Use the preset aligned with your runtime:
|
|
79
|
+
|
|
80
|
+
- Node/Bun style runtimes: `base.json`, `app.json`, `server.json`
|
|
81
|
+
- Next.js app router projects: `nextjs.json`
|
|
82
|
+
|
|
83
|
+
## Related Documentation
|
|
84
|
+
|
|
85
|
+
- [Package Docs Index](../README.md)
|
|
86
|
+
- [Base Config Details](../api/base-config.md)
|
|
87
|
+
- [Package README](../../README.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# @reasonabletech/config-typescript Examples
|
|
2
|
+
|
|
3
|
+
These examples show practical `tsconfig` setups using exported `.json` presets.
|
|
4
|
+
|
|
5
|
+
## Files In This Directory
|
|
6
|
+
|
|
7
|
+
- [base-config.ts](./base-config.ts): baseline TypeScript project examples
|
|
8
|
+
- [react-app-config.ts](./react-app-config.ts): React and Next.js app-oriented examples
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pnpm add -D typescript @reasonabletech/config-typescript
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"extends": "@reasonabletech/config-typescript/base.json",
|
|
21
|
+
"include": ["src/**/*"]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Preset Path Format
|
|
26
|
+
|
|
27
|
+
Use package subpaths with `.json`:
|
|
28
|
+
|
|
29
|
+
- `@reasonabletech/config-typescript/base.json`
|
|
30
|
+
- `@reasonabletech/config-typescript/react-app.json`
|
|
31
|
+
- `@reasonabletech/config-typescript/react-library.json`
|
|
32
|
+
- `@reasonabletech/config-typescript/nextjs.json`
|
|
33
|
+
- `@reasonabletech/config-typescript/server.json`
|
|
34
|
+
- `@reasonabletech/config-typescript/strict.json`
|
|
35
|
+
|
|
36
|
+
## Example: App + Test Config Split
|
|
37
|
+
|
|
38
|
+
`tsconfig.json`:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"extends": "@reasonabletech/config-typescript/app.json",
|
|
43
|
+
"compilerOptions": {
|
|
44
|
+
"outDir": "./dist"
|
|
45
|
+
},
|
|
46
|
+
"include": ["src/**/*"]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`tsconfig.test.json`:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"extends": "./tsconfig.json",
|
|
55
|
+
"compilerOptions": {
|
|
56
|
+
"types": ["vitest/globals", "node"]
|
|
57
|
+
},
|
|
58
|
+
"include": ["src/**/*", "tests/**/*"]
|
|
59
|
+
}
|
|
60
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base configuration examples for projects that consume
|
|
3
|
+
* @reasonabletech/config-typescript.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const baseTsConfig = {
|
|
7
|
+
extends: "@reasonabletech/config-typescript/base.json",
|
|
8
|
+
compilerOptions: {
|
|
9
|
+
outDir: "./dist",
|
|
10
|
+
rootDir: "./src",
|
|
11
|
+
baseUrl: ".",
|
|
12
|
+
paths: {
|
|
13
|
+
"@/*": ["src/*"],
|
|
14
|
+
"@/utils/*": ["src/utils/*"],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
include: ["src/**/*"],
|
|
18
|
+
exclude: ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const strictTsConfig = {
|
|
22
|
+
extends: "@reasonabletech/config-typescript/strict.json",
|
|
23
|
+
compilerOptions: {
|
|
24
|
+
outDir: "./dist",
|
|
25
|
+
},
|
|
26
|
+
include: ["src/**/*"],
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const libraryTsConfig = {
|
|
30
|
+
extends: "@reasonabletech/config-typescript/library.json",
|
|
31
|
+
compilerOptions: {
|
|
32
|
+
outDir: "./dist",
|
|
33
|
+
rootDir: "./src",
|
|
34
|
+
},
|
|
35
|
+
include: ["src/**/*"],
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const serverTsConfig = {
|
|
39
|
+
extends: "@reasonabletech/config-typescript/server.json",
|
|
40
|
+
compilerOptions: {
|
|
41
|
+
outDir: "./dist",
|
|
42
|
+
},
|
|
43
|
+
include: ["src/**/*"],
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { baseTsConfig, strictTsConfig, libraryTsConfig, serverTsConfig };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React-oriented configuration examples.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const reactAppTsConfig = {
|
|
6
|
+
extends: "@reasonabletech/config-typescript/react-app.json",
|
|
7
|
+
compilerOptions: {
|
|
8
|
+
baseUrl: ".",
|
|
9
|
+
paths: {
|
|
10
|
+
"@/*": ["src/*"],
|
|
11
|
+
"@/components/*": ["src/components/*"],
|
|
12
|
+
"@/hooks/*": ["src/hooks/*"],
|
|
13
|
+
},
|
|
14
|
+
types: ["vite/client", "node"],
|
|
15
|
+
},
|
|
16
|
+
include: ["src/**/*", "vite-env.d.ts"],
|
|
17
|
+
exclude: ["node_modules", "dist"],
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const reactLibraryTsConfig = {
|
|
21
|
+
extends: "@reasonabletech/config-typescript/react-library.json",
|
|
22
|
+
compilerOptions: {
|
|
23
|
+
outDir: "./dist",
|
|
24
|
+
rootDir: "./src",
|
|
25
|
+
},
|
|
26
|
+
include: ["src/**/*"],
|
|
27
|
+
exclude: ["**/*.test.tsx", "**/*.spec.tsx"],
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const nextJsTsConfig = {
|
|
31
|
+
extends: "@reasonabletech/config-typescript/nextjs.json",
|
|
32
|
+
compilerOptions: {
|
|
33
|
+
baseUrl: ".",
|
|
34
|
+
paths: {
|
|
35
|
+
"@/*": ["src/*"],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
include: ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const reactTestTsConfig = {
|
|
42
|
+
extends: "./tsconfig.json",
|
|
43
|
+
compilerOptions: {
|
|
44
|
+
types: ["vitest/globals", "jsdom", "@testing-library/jest-dom"],
|
|
45
|
+
},
|
|
46
|
+
include: ["src/**/*", "tests/**/*", "**/*.test.ts", "**/*.test.tsx"],
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const reactPackageScripts = {
|
|
50
|
+
scripts: {
|
|
51
|
+
dev: "vite",
|
|
52
|
+
build: "tsc --noEmit && vite build",
|
|
53
|
+
typecheck: "tsc --noEmit",
|
|
54
|
+
test: "vitest",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export {
|
|
59
|
+
reactAppTsConfig,
|
|
60
|
+
reactLibraryTsConfig,
|
|
61
|
+
nextJsTsConfig,
|
|
62
|
+
reactTestTsConfig,
|
|
63
|
+
reactPackageScripts,
|
|
64
|
+
};
|
package/lib/app.json
ADDED
package/lib/base.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "ES2022",
|
|
5
|
+
"lib": ["ES2022"],
|
|
6
|
+
"composite": true,
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"declarationMap": true,
|
|
9
|
+
"sourceMap": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"inlineSources": false,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"module": "NodeNext",
|
|
15
|
+
"moduleResolution": "NodeNext",
|
|
16
|
+
"customConditions": ["source"],
|
|
17
|
+
"allowImportingTsExtensions": false,
|
|
18
|
+
"noUnusedLocals": false,
|
|
19
|
+
"noUnusedParameters": false,
|
|
20
|
+
"preserveWatchOutput": true,
|
|
21
|
+
"skipLibCheck": true,
|
|
22
|
+
"strict": true,
|
|
23
|
+
"noEmit": false,
|
|
24
|
+
"strictNullChecks": true,
|
|
25
|
+
"allowSyntheticDefaultImports": true,
|
|
26
|
+
"resolveJsonModule": true,
|
|
27
|
+
"noImplicitReturns": false,
|
|
28
|
+
"noFallthroughCasesInSwitch": true,
|
|
29
|
+
"exactOptionalPropertyTypes": false,
|
|
30
|
+
"noUncheckedIndexedAccess": false,
|
|
31
|
+
"useUnknownInCatchVariables": true,
|
|
32
|
+
"incremental": true,
|
|
33
|
+
"types": ["node"]
|
|
34
|
+
}
|
|
35
|
+
}
|
package/lib/docs.json
ADDED
package/lib/eslint.json
ADDED
package/lib/library.json
ADDED
package/lib/nextjs.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"extends": "./base.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"lib": ["ES2023", "DOM", "DOM.Iterable"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"moduleResolution": "bundler",
|
|
8
|
+
"allowJs": true,
|
|
9
|
+
"jsx": "preserve",
|
|
10
|
+
"jsxImportSource": "react",
|
|
11
|
+
"composite": false,
|
|
12
|
+
"declaration": false,
|
|
13
|
+
"declarationMap": false,
|
|
14
|
+
"noEmit": true,
|
|
15
|
+
"plugins": [
|
|
16
|
+
{
|
|
17
|
+
"name": "next"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"extends": "./base.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
6
|
+
"jsx": "react-jsx",
|
|
7
|
+
"jsxImportSource": "react",
|
|
8
|
+
"types": ["next", "react", "react-dom", "node"]
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"extends": "./base.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"composite": false,
|
|
7
|
+
"declaration": false,
|
|
8
|
+
"declarationMap": false,
|
|
9
|
+
"emitDeclarationOnly": false,
|
|
10
|
+
"noEmit": true,
|
|
11
|
+
"jsx": "react-jsx",
|
|
12
|
+
"lib": ["ES2023", "DOM", "DOM.Iterable"]
|
|
13
|
+
}
|
|
14
|
+
}
|
package/lib/server.json
ADDED
package/lib/strict.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"extends": "./base.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"exactOptionalPropertyTypes": true,
|
|
6
|
+
"noUncheckedIndexedAccess": true,
|
|
7
|
+
"noImplicitOverride": true,
|
|
8
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
9
|
+
"allowUnusedLabels": false,
|
|
10
|
+
"allowUnreachableCode": false
|
|
11
|
+
}
|
|
12
|
+
}
|
package/lib/tooling.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reasonabletech/config-typescript",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared TypeScript configuration presets",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"reasonabletech",
|
|
7
|
+
"config",
|
|
8
|
+
"typescript",
|
|
9
|
+
"tsconfig",
|
|
10
|
+
"typescript-config",
|
|
11
|
+
"typescript-preset",
|
|
12
|
+
"compiler-options"
|
|
13
|
+
],
|
|
14
|
+
"type": "module",
|
|
15
|
+
"files": [
|
|
16
|
+
"lib/**/*.json",
|
|
17
|
+
"docs/**/*",
|
|
18
|
+
"examples/**/*"
|
|
19
|
+
],
|
|
20
|
+
"exports": {
|
|
21
|
+
"./base.json": "./lib/base.json",
|
|
22
|
+
"./app.json": "./lib/app.json",
|
|
23
|
+
"./library.json": "./lib/library.json",
|
|
24
|
+
"./browser-library.json": "./lib/browser-library.json",
|
|
25
|
+
"./chrome-extension.json": "./lib/chrome-extension.json",
|
|
26
|
+
"./eslint.json": "./lib/eslint.json",
|
|
27
|
+
"./nextjs.json": "./lib/nextjs.json",
|
|
28
|
+
"./platform-library.json": "./lib/platform-library.json",
|
|
29
|
+
"./react-app.json": "./lib/react-app.json",
|
|
30
|
+
"./react-library.json": "./lib/react-library.json",
|
|
31
|
+
"./server.json": "./lib/server.json",
|
|
32
|
+
"./strict.json": "./lib/strict.json",
|
|
33
|
+
"./tooling.json": "./lib/tooling.json",
|
|
34
|
+
"./vscode-extension.json": "./lib/vscode-extension.json",
|
|
35
|
+
"./docs.json": "./lib/docs.json"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public",
|
|
40
|
+
"registry": "https://registry.npmjs.org/"
|
|
41
|
+
},
|
|
42
|
+
"author": "Reasonable Tech Company",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/ReasonableTech/core-utils.git",
|
|
46
|
+
"directory": "packages/config-typescript"
|
|
47
|
+
},
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/ReasonableTech/core-utils/issues"
|
|
50
|
+
},
|
|
51
|
+
"homepage": "https://github.com/ReasonableTech/core-utils/tree/main/packages/config-typescript",
|
|
52
|
+
"sideEffects": false,
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=22"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "echo 'No build needed for configuration package'",
|
|
58
|
+
"clean": "rm -rf .turbo node_modules tsconfig.tsbuildinfo",
|
|
59
|
+
"lint": "echo \"No lint target for config-only package\"",
|
|
60
|
+
"lint:check": "echo \"No lint target for config-only package\"",
|
|
61
|
+
"test": "echo 'No tests for configuration package'",
|
|
62
|
+
"typecheck": "echo 'No TypeScript files to check in configuration package'",
|
|
63
|
+
"verify:release": "pnpm typecheck && pnpm lint:check && pnpm test && pnpm build"
|
|
64
|
+
}
|
|
65
|
+
}
|