presetter-preset-react 3.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 +107 -0
- package/configs/eslint.yaml +14 -0
- package/configs/jest.yaml +5 -0
- package/configs/lintstaged.yaml +2 -0
- package/configs/rollup.yaml +3 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +86 -0
- package/lib/index.js.map +1 -0
- package/package.json +43 -0
- package/templates/eslintrc.yaml +12 -0
- package/templates/image.d.ts +48 -0
- package/templates/style.d.ts +19 -0
- package/templates/tsconfig.yaml +37 -0
package/README.md
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
<div align="center">
|
2
|
+
|
3
|
+

|
4
|
+
|
5
|
+
๐๐ป _A collection of opinionated configurations for a React project in typescript for presetter_
|
6
|
+
|
7
|
+
โขโ โ[Quick Start](#quick-start)โ โโขโ โ[Project Structure](#project-structure)โ โโขโ โ[Customisation](#customisation)โ โโขโ โ[Scripts](#script-template-summary)โ โโข
|
8
|
+
|
9
|
+
[](https://github.com/alvis/presetter/releases)
|
10
|
+
[](https://github.com/alvis/presetter/actions)
|
11
|
+
[](https://codeclimate.com/github/alvis/presetter/maintainability)
|
12
|
+
[](https://codeclimate.com/github/alvis/presetter/test_coverage)
|
13
|
+
[](https://snyk.io/test/github/alvis/presetter?targetFile=packages/preset-react/package.json&style=flat-square)
|
14
|
+
[](https://david-dm.org/alvis/presetter?path=packages/preset-react)
|
15
|
+
[](https://github.com/alvis/presetter/blob/master/LICENSE)
|
16
|
+
|
17
|
+
</div>
|
18
|
+
|
19
|
+
## Features
|
20
|
+
|
21
|
+
**presetter-preset-react** is an opinionated preset for you to setup a React project in a fraction of time you usually take via [**presetter**](https://github.com/alvis/presetter).
|
22
|
+
|
23
|
+
- โจ TSX support
|
24
|
+
- ๐งช @testing-library/react
|
25
|
+
- ๐ Recommended rules from eslint-plugin-react
|
26
|
+
|
27
|
+
## Quick Start
|
28
|
+
|
29
|
+
[**FULL DOCUMENTATION IS AVAILABLE HERE**](https://github.com/alvis/presetter/blob/master/README.md)
|
30
|
+
|
31
|
+
1. Bootstrap your project with `presetter-preset-essentials` & `presetter-preset-react`
|
32
|
+
|
33
|
+
```shell
|
34
|
+
npx presetter use presetter-preset presetter-preset-react
|
35
|
+
```
|
36
|
+
|
37
|
+
That's. One command and you're set.
|
38
|
+
|
39
|
+
2. Develop and run life cycle scripts provided by the preset
|
40
|
+
|
41
|
+
At this point, all development packages specified in the preset are installed,
|
42
|
+
and now you can try to run some example life cycle scripts (e.g. run prepare).
|
43
|
+
|
44
|
+

|
45
|
+
|
46
|
+
## Project Structure
|
47
|
+
|
48
|
+
After installation, your project file structure should resemble the following or with more configuration files if you also installed other presets such as [`presetter-preset-essentials`](https://github.com/alvis/presetter/blob/master/packages/preset-essentials).
|
49
|
+
|
50
|
+
Implement your business logic under `source` and prepare tests under `spec`. The `.d.ts` files are handy type definitions for you to import `.css` or image files in typescript.
|
51
|
+
|
52
|
+
**TIPS** You can always change the source directory to other (e.g. src) by setting the `source` variable in `.presetterrc.json`. See the [customisation](https://github.com/alvis/presetter/blob/master/packages/preset-react#customisation) section below for more details.
|
53
|
+
|
54
|
+
```
|
55
|
+
(root)
|
56
|
+
โโ .eslintrc.json
|
57
|
+
โโ .git
|
58
|
+
โโ .preseterrc.json
|
59
|
+
โโ node_modules
|
60
|
+
โโ source
|
61
|
+
โ โโ <folders>
|
62
|
+
โ โโ index.ts
|
63
|
+
โ โโ (auxiliary).ts
|
64
|
+
โโ spec
|
65
|
+
โ โโ *.spec.ts
|
66
|
+
โโ types
|
67
|
+
โ โโ image.d.ts
|
68
|
+
โ โโ style.d.ts
|
69
|
+
โ โโ (type).d.ts
|
70
|
+
โโ package.json
|
71
|
+
โโ tsconfig.json
|
72
|
+
```
|
73
|
+
|
74
|
+
## Customisation
|
75
|
+
|
76
|
+
By default, this preset exports a handy configuration set for a React project written in typescript.
|
77
|
+
But you can further customise (either extending or replacing) the configuration by specifying the change in the config file (`.presetterrc` or `.presetterrc.json`).
|
78
|
+
|
79
|
+
These settings are available in the `config` field in the config file. For directories, the setting is specified in the `variable` field.
|
80
|
+
|
81
|
+
The structure of `.presetterrc` should follow the interface below:
|
82
|
+
|
83
|
+
```ts
|
84
|
+
interface PresetterRC {
|
85
|
+
/** name(s) of the preset e.g. presetter-preset-react */
|
86
|
+
name: string | string[];
|
87
|
+
/** additional configuration passed to the preset for generating the configuration files */
|
88
|
+
config?: {
|
89
|
+
// โโ configuration for other tools via other presets (e.g. presetter-preset-essentials)
|
90
|
+
// ...
|
91
|
+
|
92
|
+
/** configuration to be merged with .eslintrc */
|
93
|
+
eslint?: Record<string, unknown>;
|
94
|
+
/** configuration to be merged with tsconfig.json */
|
95
|
+
tsconfig?: Record<string, unknown>;
|
96
|
+
/** variables to be substituted in templates */
|
97
|
+
variable?: {
|
98
|
+
/** the directory containing all source code (default: source) */
|
99
|
+
source?: string;
|
100
|
+
/** the directory containing all typing files (default: types) */
|
101
|
+
types?: string;
|
102
|
+
/** the directory containing all output tile (default: source) */
|
103
|
+
output?: string;
|
104
|
+
};
|
105
|
+
};
|
106
|
+
}
|
107
|
+
```
|
@@ -0,0 +1,14 @@
|
|
1
|
+
rules:
|
2
|
+
'@typescript-eslint/naming-convention':
|
3
|
+
- error
|
4
|
+
- selector: variable
|
5
|
+
types:
|
6
|
+
- function
|
7
|
+
format:
|
8
|
+
- camelCase
|
9
|
+
- PascalCase
|
10
|
+
jsdoc/require-returns: # tell us what the function is expected to return
|
11
|
+
1:
|
12
|
+
contexts:
|
13
|
+
- FunctionDeclaration:has(BlockStatement > ReturnStatement:not([argument.type='JSXElement']))
|
14
|
+
- ArrowFunctionExpression:has(BlockStatement > ReturnStatement:not([argument.type='JSXElement']))
|
package/lib/index.d.ts
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
import type { PresetAsset } from 'presetter';
|
2
|
+
export declare type PresetConfig = {
|
3
|
+
eslint?: Record<string, unknown>;
|
4
|
+
tsconfig?: Record<string, unknown>;
|
5
|
+
};
|
6
|
+
export declare type Variable = {
|
7
|
+
source?: string;
|
8
|
+
types?: string;
|
9
|
+
output?: string;
|
10
|
+
};
|
11
|
+
export declare const DEFAULT_VARIABLE: Variable;
|
12
|
+
export default function (): Promise<PresetAsset>;
|
package/lib/index.js
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = _default;
|
7
|
+
exports.DEFAULT_VARIABLE = void 0;
|
8
|
+
|
9
|
+
var _path = require("path");
|
10
|
+
|
11
|
+
/*
|
12
|
+
* *** MIT LICENSE ***
|
13
|
+
* -------------------------------------------------------------------------
|
14
|
+
* This code may be modified and distributed under the MIT license.
|
15
|
+
* See the LICENSE file for details.
|
16
|
+
* -------------------------------------------------------------------------
|
17
|
+
*
|
18
|
+
* @summary Preset for a React project
|
19
|
+
*
|
20
|
+
* @author Alvis HT Tang <alvis@hilbert.space>
|
21
|
+
* @license MIT
|
22
|
+
* @copyright Copyright (c) 2021 - All Rights Reserved.
|
23
|
+
* -------------------------------------------------------------------------
|
24
|
+
*/
|
25
|
+
// paths to the template directory
|
26
|
+
const TEMPLATES = (0, _path.resolve)(__dirname, '..', 'templates');
|
27
|
+
const CONFIGS = (0, _path.resolve)(__dirname, '..', 'configs');
|
28
|
+
/** config for this preset */
|
29
|
+
|
30
|
+
const DEFAULT_VARIABLE = {
|
31
|
+
source: 'source',
|
32
|
+
types: 'types',
|
33
|
+
output: 'lib'
|
34
|
+
};
|
35
|
+
exports.DEFAULT_VARIABLE = DEFAULT_VARIABLE;
|
36
|
+
const IMAGE_TYPE = 'image.d.ts';
|
37
|
+
const STYLE_TYPE = 'style.d.ts';
|
38
|
+
|
39
|
+
const template = ({
|
40
|
+
custom: {
|
41
|
+
variable: {
|
42
|
+
types
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}) => ({
|
46
|
+
'.eslintrc.json': (0, _path.resolve)(TEMPLATES, 'eslintrc.yaml'),
|
47
|
+
'tsconfig.json': (0, _path.resolve)(TEMPLATES, 'tsconfig.yaml'),
|
48
|
+
[(0, _path.join)(types, IMAGE_TYPE)]: (0, _path.resolve)(TEMPLATES, IMAGE_TYPE),
|
49
|
+
[(0, _path.join)(types, STYLE_TYPE)]: (0, _path.resolve)(TEMPLATES, STYLE_TYPE)
|
50
|
+
});
|
51
|
+
|
52
|
+
const noSymlinks = ({
|
53
|
+
custom: {
|
54
|
+
variable: {
|
55
|
+
types
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}) => [(0, _path.join)(types, IMAGE_TYPE), (0, _path.join)(types, STYLE_TYPE)];
|
59
|
+
|
60
|
+
const supplementaryConfig = {
|
61
|
+
eslint: (0, _path.resolve)(CONFIGS, 'eslint.yaml'),
|
62
|
+
gitignore: ({
|
63
|
+
custom: {
|
64
|
+
variable: {
|
65
|
+
types
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}) => [(0, _path.join)('/', types, IMAGE_TYPE), (0, _path.join)('/', types, STYLE_TYPE)],
|
69
|
+
jest: (0, _path.resolve)(CONFIGS, 'jest.yaml'),
|
70
|
+
lintstaged: (0, _path.resolve)(CONFIGS, 'lintstaged.yaml'),
|
71
|
+
rollup: (0, _path.resolve)(CONFIGS, 'rollup.yaml')
|
72
|
+
};
|
73
|
+
/**
|
74
|
+
* get the list of templates provided by this preset
|
75
|
+
* @returns list of preset templates
|
76
|
+
*/
|
77
|
+
|
78
|
+
async function _default() {
|
79
|
+
return {
|
80
|
+
template,
|
81
|
+
noSymlinks,
|
82
|
+
supplementaryConfig,
|
83
|
+
variable: DEFAULT_VARIABLE
|
84
|
+
};
|
85
|
+
}
|
86
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../source/index.ts"],"names":["TEMPLATES","__dirname","CONFIGS","DEFAULT_VARIABLE","source","types","output","IMAGE_TYPE","STYLE_TYPE","template","custom","variable","noSymlinks","supplementaryConfig","eslint","gitignore","jest","lintstaged","rollup"],"mappings":";;;;;;;;AAeA;;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA,MAAMA,SAAS,GAAG,mBAAQC,SAAR,EAAmB,IAAnB,EAAyB,WAAzB,CAAlB;AACA,MAAMC,OAAO,GAAG,mBAAQD,SAAR,EAAmB,IAAnB,EAAyB,SAAzB,CAAhB;AAEA;;AAkBO,MAAME,gBAA0B,GAAG;AACxCC,EAAAA,MAAM,EAAE,QADgC;AAExCC,EAAAA,KAAK,EAAE,OAFiC;AAGxCC,EAAAA,MAAM,EAAE;AAHgC,CAAnC;;AAMP,MAAMC,UAAU,GAAG,YAAnB;AACA,MAAMC,UAAU,GAAG,YAAnB;;AAEA,MAAMC,QAAiC,GAAG,CAAC;AACzCC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE;AAAEN,MAAAA;AAAF;AADJ;AADiC,CAAD,MAInC;AACL,oBAAkB,mBAAQL,SAAR,EAAmB,eAAnB,CADb;AAEL,mBAAiB,mBAAQA,SAAR,EAAmB,eAAnB,CAFZ;AAGL,GAAC,gBAAKK,KAAL,EAAYE,UAAZ,CAAD,GAA2B,mBAAQP,SAAR,EAAmBO,UAAnB,CAHtB;AAIL,GAAC,gBAAKF,KAAL,EAAYG,UAAZ,CAAD,GAA2B,mBAAQR,SAAR,EAAmBQ,UAAnB;AAJtB,CAJmC,CAA1C;;AAWA,MAAMI,UAAqC,GAAG,CAAC;AAC7CF,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE;AAAEN,MAAAA;AAAF;AADJ;AADqC,CAAD,KAIxC,CAAC,gBAAKA,KAAL,EAAYE,UAAZ,CAAD,EAA0B,gBAAKF,KAAL,EAAYG,UAAZ,CAA1B,CAJN;;AAMA,MAAMK,mBAAuD,GAAG;AAC9DC,EAAAA,MAAM,EAAE,mBAAQZ,OAAR,EAAiB,aAAjB,CADsD;AAE9Da,EAAAA,SAAS,EAAE,CAAC;AACVL,IAAAA,MAAM,EAAE;AACNC,MAAAA,QAAQ,EAAE;AAAEN,QAAAA;AAAF;AADJ;AADE,GAAD,KAIL,CAAC,gBAAK,GAAL,EAAUA,KAAV,EAAiBE,UAAjB,CAAD,EAA+B,gBAAK,GAAL,EAAUF,KAAV,EAAiBG,UAAjB,CAA/B,CANwD;AAO9DQ,EAAAA,IAAI,EAAE,mBAAQd,OAAR,EAAiB,WAAjB,CAPwD;AAQ9De,EAAAA,UAAU,EAAE,mBAAQf,OAAR,EAAiB,iBAAjB,CARkD;AAS9DgB,EAAAA,MAAM,EAAE,mBAAQhB,OAAR,EAAiB,aAAjB;AATsD,CAAhE;AAYA;AACA;AACA;AACA;;AACe,0BAAwC;AACrD,SAAO;AACLO,IAAAA,QADK;AAELG,IAAAA,UAFK;AAGLC,IAAAA,mBAHK;AAILF,IAAAA,QAAQ,EAAER;AAJL,GAAP;AAMD","sourcesContent":["/*\n * *** MIT LICENSE ***\n * -------------------------------------------------------------------------\n * This code may be modified and distributed under the MIT license.\n * See the LICENSE file for details.\n * -------------------------------------------------------------------------\n *\n * @summary Preset for a React project\n *\n * @author Alvis HT Tang <alvis@hilbert.space>\n * @license MIT\n * @copyright Copyright (c) 2021 - All Rights Reserved.\n * -------------------------------------------------------------------------\n */\n\nimport { join, resolve } from 'path';\n\nimport type { PresetAsset } from 'presetter';\n\n// paths to the template directory\nconst TEMPLATES = resolve(__dirname, '..', 'templates');\nconst CONFIGS = resolve(__dirname, '..', 'configs');\n\n/** config for this preset */\nexport type PresetConfig = {\n /** configuration to be merged with .eslintrc */\n eslint?: Record<string, unknown>;\n /** configuration to be merged with tsconfig.json */\n tsconfig?: Record<string, unknown>;\n};\n\n/** list of configurable variables */\nexport type Variable = {\n /** the directory containing all source code (default: source) */\n source?: string;\n /** the directory containing all extra typing files (default: types) */\n types?: string;\n /** the directory containing all the compiled files (default: lib) */\n output?: string;\n};\n\nexport const DEFAULT_VARIABLE: Variable = {\n source: 'source',\n types: 'types',\n output: 'lib',\n};\n\nconst IMAGE_TYPE = 'image.d.ts';\nconst STYLE_TYPE = 'style.d.ts';\n\nconst template: PresetAsset['template'] = ({\n custom: {\n variable: { types },\n },\n}) => ({\n '.eslintrc.json': resolve(TEMPLATES, 'eslintrc.yaml'),\n 'tsconfig.json': resolve(TEMPLATES, 'tsconfig.yaml'),\n [join(types, IMAGE_TYPE)]: resolve(TEMPLATES, IMAGE_TYPE),\n [join(types, STYLE_TYPE)]: resolve(TEMPLATES, STYLE_TYPE),\n});\n\nconst noSymlinks: PresetAsset['noSymlinks'] = ({\n custom: {\n variable: { types },\n },\n}) => [join(types, IMAGE_TYPE), join(types, STYLE_TYPE)];\n\nconst supplementaryConfig: PresetAsset['supplementaryConfig'] = {\n eslint: resolve(CONFIGS, 'eslint.yaml'),\n gitignore: ({\n custom: {\n variable: { types },\n },\n }) => [join('/', types, IMAGE_TYPE), join('/', types, STYLE_TYPE)],\n jest: resolve(CONFIGS, 'jest.yaml'),\n lintstaged: resolve(CONFIGS, 'lintstaged.yaml'),\n rollup: resolve(CONFIGS, 'rollup.yaml'),\n};\n\n/**\n * get the list of templates provided by this preset\n * @returns list of preset templates\n */\nexport default async function (): Promise<PresetAsset> {\n return {\n template,\n noSymlinks,\n supplementaryConfig,\n variable: DEFAULT_VARIABLE,\n };\n}\n"],"file":"index.js"}
|
package/package.json
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
"name": "presetter-preset-react",
|
3
|
+
"version": "3.0.0",
|
4
|
+
"description": "An opinionated presetter preset for a React project",
|
5
|
+
"keywords": [
|
6
|
+
"presetter",
|
7
|
+
"preset"
|
8
|
+
],
|
9
|
+
"homepage": "https://github.com/alvis/presetter#readme",
|
10
|
+
"bugs": {
|
11
|
+
"url": "https://github.com/alvis/presetter/issues"
|
12
|
+
},
|
13
|
+
"license": "MIT",
|
14
|
+
"author": "Alvis HT Tang <alvis@hilbert.space>",
|
15
|
+
"main": "lib/index.js",
|
16
|
+
"types": "lib/index.d.ts",
|
17
|
+
"repository": {
|
18
|
+
"type": "git",
|
19
|
+
"url": "git+https://github.com/alvis/presetter.git"
|
20
|
+
},
|
21
|
+
"scripts": {
|
22
|
+
"bootstrap": "presetter bootstrap && run prepare",
|
23
|
+
"build": "run build",
|
24
|
+
"coverage": "run coverage",
|
25
|
+
"lint": "run lint",
|
26
|
+
"prepublishOnly": "run prepare && run prepublishOnly",
|
27
|
+
"release": "run-s release:peer:*",
|
28
|
+
"release:peer:presetter": "npm pkg set peerDependencies.presetter=^$(npx -c 'echo $npm_package_version')",
|
29
|
+
"test": "run test",
|
30
|
+
"watch": "run watch"
|
31
|
+
},
|
32
|
+
"peerDependencies": {
|
33
|
+
"@babel/preset-react": "^7.0.0",
|
34
|
+
"@testing-library/react": "^12.0.0",
|
35
|
+
"@types/react": "^17.0.0",
|
36
|
+
"eslint-plugin-react": "^7.0.0",
|
37
|
+
"presetter": "^3.0.0"
|
38
|
+
},
|
39
|
+
"devDependencies": {
|
40
|
+
"presetter": "file:../presetter",
|
41
|
+
"presetter-preset-strict": "file:../preset-strict"
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
extends:
|
2
|
+
- plugin:react/recommended
|
3
|
+
rules:
|
4
|
+
react/boolean-prop-naming: warn
|
5
|
+
react/button-has-type: warn
|
6
|
+
react/destructuring-assignment: warn
|
7
|
+
react/prop-types: 'off'
|
8
|
+
react/sort-comp: warn
|
9
|
+
react/jsx-sort-props:
|
10
|
+
- warn
|
11
|
+
- callbacksLast: true
|
12
|
+
shorthandFirst: true
|
@@ -0,0 +1,48 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
/// <reference types="react-dom" />
|
3
|
+
|
4
|
+
declare module '*.avif' {
|
5
|
+
const src: string;
|
6
|
+
export default src;
|
7
|
+
}
|
8
|
+
|
9
|
+
declare module '*.bmp' {
|
10
|
+
const src: string;
|
11
|
+
export default src;
|
12
|
+
}
|
13
|
+
|
14
|
+
declare module '*.gif' {
|
15
|
+
const src: string;
|
16
|
+
export default src;
|
17
|
+
}
|
18
|
+
|
19
|
+
declare module '*.jpg' {
|
20
|
+
const src: string;
|
21
|
+
export default src;
|
22
|
+
}
|
23
|
+
|
24
|
+
declare module '*.jpeg' {
|
25
|
+
const src: string;
|
26
|
+
export default src;
|
27
|
+
}
|
28
|
+
|
29
|
+
declare module '*.png' {
|
30
|
+
const src: string;
|
31
|
+
export default src;
|
32
|
+
}
|
33
|
+
|
34
|
+
declare module '*.webp' {
|
35
|
+
const src: string;
|
36
|
+
export default src;
|
37
|
+
}
|
38
|
+
|
39
|
+
declare module '*.svg' {
|
40
|
+
import * as React from 'react';
|
41
|
+
|
42
|
+
export const ReactComponent: React.FunctionComponent<
|
43
|
+
React.SVGProps<SVGSVGElement> & { title?: string }
|
44
|
+
>;
|
45
|
+
|
46
|
+
const src: string;
|
47
|
+
export default src;
|
48
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
declare module '*.css' {
|
2
|
+
const classes: { readonly [key: string]: string };
|
3
|
+
export default classes;
|
4
|
+
}
|
5
|
+
|
6
|
+
declare module '*.less' {
|
7
|
+
const classes: { readonly [key: string]: string };
|
8
|
+
export default classes;
|
9
|
+
}
|
10
|
+
|
11
|
+
declare module '*.scss' {
|
12
|
+
const classes: { readonly [key: string]: string };
|
13
|
+
export default classes;
|
14
|
+
}
|
15
|
+
|
16
|
+
declare module '*.sass' {
|
17
|
+
const classes: { readonly [key: string]: string };
|
18
|
+
export default classes;
|
19
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
compilerOptions:
|
2
|
+
# emittance
|
3
|
+
outDir: '{output}'
|
4
|
+
module: commonjs # node doesn't support anything non commonjs code yet
|
5
|
+
target: ES2017 # use ES2017 as it's the latest standard node 10 can be fully compatible with
|
6
|
+
declaration: true
|
7
|
+
sourceMap: true
|
8
|
+
|
9
|
+
# compatibility
|
10
|
+
allowSyntheticDefaultImports: true
|
11
|
+
esModuleInterop: true
|
12
|
+
experimentalDecorators: true
|
13
|
+
emitDecoratorMetadata: true
|
14
|
+
isolatedModules: false
|
15
|
+
jsx: react
|
16
|
+
|
17
|
+
# module resolution
|
18
|
+
moduleResolution: node
|
19
|
+
resolveJsonModule: true
|
20
|
+
baseUrl: .
|
21
|
+
paths:
|
22
|
+
'#*':
|
23
|
+
- '{source}/*'
|
24
|
+
'*':
|
25
|
+
- '{types}/*'
|
26
|
+
|
27
|
+
# libraries
|
28
|
+
lib:
|
29
|
+
- ES2020
|
30
|
+
- ESNext
|
31
|
+
- DOM
|
32
|
+
include:
|
33
|
+
- '**/*.json'
|
34
|
+
- '**/*.ts'
|
35
|
+
- '**/*.tsx'
|
36
|
+
exclude:
|
37
|
+
- '**/node_modules'
|