Commit 671dee50cd37bcdc004e512c04d6a2b2c2a66b57

Authored by qiang.tian
0 parents

init

  1 +# http://editorconfig.org
  2 +root = true
  3 +
  4 +[*]
  5 +indent_style = space
  6 +indent_size = 2
  7 +end_of_line = lf
  8 +charset = utf-8
  9 +trim_trailing_whitespace = true
  10 +insert_final_newline = true
  11 +
  12 +[*.md]
  13 +trim_trailing_whitespace = false
  14 +
  15 +[Makefile]
  16 +indent_style = tab
... ...
  1 +{
  2 + "plugins": ["prettier"],
  3 + "rules": {
  4 + "prettier/prettier": "error"
  5 + },
  6 + "extends": ["plugin:prettier/recommended"]
  7 +}
... ...
  1 +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
  2 +
  3 +# dependencies
  4 +**/node_modules
  5 +# roadhog-api-doc ignore
  6 +/src/utils/request-temp.js
  7 +_roadhog-api-doc
  8 +
  9 +# production
  10 +/dist
  11 +/.vscode
  12 +/.fleet
  13 +
  14 +# misc
  15 +.DS_Store
  16 +npm-debug.log*
  17 +yarn-error.log
  18 +
  19 +/coverage
  20 +.idea
  21 +yarn.lock
  22 +package-lock.json
  23 +pnpm-lock.yaml
  24 +*bak
  25 +.vscode
  26 +.history
  27 +
  28 +# visual studio code
  29 +.history
  30 +*.log
  31 +functions/*
  32 +.temp/**
  33 +
  34 +# umi
  35 +.umi
  36 +.umi-production
  37 +
  38 +# screenshot
  39 +screenshot
  40 +.firebase
  41 +.eslintcache
  42 +
  43 +build
  44 +
  45 +package-lock.json
... ...
  1 +#!/usr/bin/env sh
  2 +. "$(dirname -- "$0")/_/husky.sh"
  3 +
  4 +npm run lint-staged
... ...
  1 +registry=http://registry.npm.qgutech.com/
... ...
  1 +**/*.svg
  2 +**/*.ejs
  3 +**/*.html
  4 +package.json
  5 +.umi
  6 +.umi-production
  7 +.umi-test
... ...
  1 +{
  2 + "singleQuote": true,
  3 + "trailingComma": "all",
  4 + "printWidth": 80,
  5 + "overrides": [
  6 + {
  7 + "files": ".prettierrc",
  8 + "options": { "parser": "json" }
  9 + }
  10 + ]
  11 +}
... ...
  1 +# 启效低代码平台
  2 +
  3 +基于[qx-frontend-admin-example](http://gitlab.qgutech.com/framework/qx-frontend-admin-example)项目创建。
  4 +
  5 +基于 Ant Design Pro(v4),使用了 Ant Design(v4.16.x)、[UMI](https://umijs.org/zh-CN/docs/getting-started)(v3.5.x)构建的[React](https://zh-hans.reactjs.org/)(v17)项目,使用[`TypeScript`](https://pro.ant.design/docs/uset-typescript-cn),Webpack5。
  6 +
  7 +技术栈:UMI + AntD + AntD Pro + dva + XRender
  8 +
  9 +**功能特性:**
  10 +
  11 +- 多主题
  12 +- 国际化
  13 +- 登录
  14 +- 权限
  15 +- UI 测试
  16 +- 错误处理
  17 +
  18 +**技术特点:**
  19 +
  20 +- 按需加载
  21 +- 服务端渲染
  22 +
  23 +## 一、环境准备
  24 +
  25 +NODE 环境:node:`v12.22.1`以上(`或v16.9.1`
  26 +
  27 +使用青谷npm仓库:
  28 +```bash
  29 +npm install -g nrm
  30 +nrm add qgNpm http://registry.npm.qgutech.com/
  31 +nrm use qgNpm
  32 +nrm ls
  33 +```
  34 +
  35 +安装 `node_modules`(初始化):
  36 +
  37 +```bash
  38 +npm install
  39 +```
  40 +
  41 +## 二、提供的脚本
  42 +
  43 +Ant Design Pro 提供了一些有用的脚本,帮助您快速启动和构建 web 项目、代码样式检查和测试。 `package.json`中提供的脚本。可以安全地修改或添加其他脚本:
  44 +
  45 +### 启动项目
  46 +
  47 +```bash
  48 +yarn start:dev
  49 +```
  50 +
  51 +
  52 +
  53 +```bash
  54 +npm start:dev
  55 +```
  56 +
  57 +### 生成项目
  58 +
  59 +```bash
  60 +npm run build
  61 +```
  62 +
  63 +### 检查代码样式
  64 +
  65 +```bash
  66 +npm run lint
  67 +```
  68 +
  69 +也可以使用脚本自动修复某些 lint 错误:
  70 +
  71 +```bash
  72 +npm run lint:fix
  73 +```
  74 +
  75 +### 测试代码
  76 +
  77 +```bash
  78 +npm test
  79 +```
  80 +
  81 +**其它**
  82 +
  83 +```bash
  84 +$ yarn add <package...>
  85 +$ yarn remove <package...>
  86 +```
  87 +
  88 +## 三、参考资料
  89 +
  90 +- [《启效前端低代码方案》](https://qgutech.yuque.com/docs/share/13d7289e-2b44-44c2-a44a-1657b592758e)
  91 +- [React](https://zh-hans.reactjs.org/)
  92 +- [UMI](https://umijs.org/zh-CN/docs/getting-started) | [UMI 入门](https://www.yuque.com/umijs/umi/dvalore)
  93 +- [Ant Design](https://ant.design)
  94 +- [Ant Design Pro](https://pro.ant.design) | [github](https://github.com/ant-design/ant-design-pro)
  95 +- [XRender](https://xrender.fun)
  96 +- [AntV X6(流程图)](https://antv-x6.gitee.io/zh/docs/tutorial/getting-started)
  97 +- [Official公式文档](https://formulajs.info)
  98 +- [CodeMirror代码编辑器](https://codemirror.net/doc/manual.html)
  99 +- [JS日期处理类库Moment](http://momentjs.cn/)
  100 +- [ahooks](https://ahooks.js.org/zh-CN)
  101 +
  102 +
  103 +## 四、启效前端规范
  104 +- 开发工具:idea、webstorm
  105 +- css、html、js 结构与命名都需要具有语义化
  106 +- CSS命名规则
  107 + - 遵循[BEM命名规则](https://bemcss.com/)
  108 + -`qx` 开头,如果是模块功能后面跟上模块缩写。eg:`qx-fr`
  109 +- 文件/文件夹名以中划线`-`连接,eg: `rel-selector`
  110 +- 启用eslint校验
  111 +- ts/js规范:
  112 + - 定义interface、type、类 遵循大驼峰命名规范
  113 + - 不能使用命名变量:`_`
  114 +- html
  115 + - 如非必要不要,不要增加过多的html标签包裹
  116 +
  117 +
  118 +## 五、开启开发者模式
  119 +`window.sessionStorage.setItem("DEVELOPER_MODE", 1)`
... ...
  1 +const { defineConfig } = require('vite')
  2 +
  3 +module.exports = defineConfig({
  4 +
  5 +})
... ...
  1 +const CopyPlugin = require('copy-webpack-plugin');
  2 +const HtmlWebpackPlugin = require('html-webpack-plugin');
  3 +const process = require('process');
  4 +const path = require('path');
  5 +
  6 +const cwd = process.cwd();
  7 +
  8 +module.exports = {
  9 + output: {
  10 + filename: 'index.js',
  11 + libraryTarget: 'umd',
  12 + },
  13 + entry: path.resolve(cwd, './src/index.tsx'),
  14 + module: {
  15 + rules: [
  16 + {
  17 + test: /\.(js|jsx)$/,
  18 + use: {
  19 + loader: 'babel-loader',
  20 + options: {
  21 + presets: ['@babel/preset-env', '@babel/preset-react'],
  22 + },
  23 + },
  24 + },
  25 + {
  26 + test: /\.(ts|tsx)$/,
  27 + use: {
  28 + loader: 'ts-loader',
  29 + },
  30 + },
  31 + {
  32 + test: /\.(ttf|eot|woff(2)?)(\?[a-z0-9=&.]+)?$/,
  33 + use: {
  34 + loader: 'file-loader',
  35 + },
  36 + },
  37 + {
  38 + test: /\.less$/i,
  39 + use: ['style-loader', 'css-loader', 'less-loader'],
  40 + },
  41 + {
  42 + test: /\.svg$/,
  43 + use: ['@svgr/webpack', 'url-loader'],
  44 + },
  45 + ],
  46 + },
  47 + // externals: {
  48 + // react: 'React',
  49 + // 'react-dom': 'ReactDOM',
  50 + // },
  51 + resolve: {
  52 + extensions: ['.json', '.jsx', '.js', '.ts', '.tsx'],
  53 + alias: {
  54 + '@': path.resolve(cwd, './src/'),
  55 + },
  56 + },
  57 + plugins: [
  58 + new HtmlWebpackPlugin({
  59 + template: path.resolve(cwd, './src/public/index.html'),
  60 + }),
  61 + new CopyPlugin({
  62 + patterns: [
  63 + {
  64 + from: path.resolve(cwd, './src/public'),
  65 + to: 'public',
  66 + },
  67 + ],
  68 + }),
  69 + ],
  70 +};
... ...
  1 +const { merge } = require('webpack-merge');
  2 +const baseConfig = require('./webpack.base');
  3 +
  4 +module.exports = merge(baseConfig, {
  5 + mode: 'development',
  6 + devServer: {
  7 + hot: false,
  8 + headers: {
  9 + 'Access-Control-Allow-Origin': '*',
  10 + },
  11 + },
  12 + externals: {
  13 + },
  14 +});
... ...
  1 +const { merge } = require('webpack-merge');
  2 +const baseConfig = require('./webpack.base')
  3 +
  4 +module.exports = merge(baseConfig, {
  5 + mode: 'production'
  6 +})
... ...
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6 + <title>启效微前端项目</title>
  7 +</head>
  8 +<body>
  9 + <div id="root"></div>
  10 + <script type="module" src="./src/index.tsx"></script>
  11 +</body>
  12 +</html>
... ...
  1 +{
  2 + "name": "qx-designer-dataflow",
  3 + "version": "1.0.0",
  4 + "description": "",
  5 + "main": "index.js",
  6 + "scripts": {
  7 + "start": "vite --config ./config/vite.config.js",
  8 + "build": "webpack build --config ./config/webpack.prod.js",
  9 + "preview": "webpack-dev-server --config ./config/webpack.dev.js",
  10 + "prepare": "husky install",
  11 + "lint-staged": "lint-staged",
  12 + "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'"
  13 + },
  14 + "lint-staged": {
  15 + "src/**/*.{js,jsx,less,md,json}": [
  16 + "prettier --write"
  17 + ],
  18 + "src/**/*.ts?(x)": [
  19 + "prettier --parser=typescript --write"
  20 + ]
  21 + },
  22 + "keywords": [],
  23 + "author": "",
  24 + "license": "ISC",
  25 + "dependencies": {
  26 + "hox": "^2.1.1",
  27 + "react": "^18.2.0",
  28 + "react-dom": "^18.2.0",
  29 + "react-router": "^6.15.0",
  30 + "react-router-dom": "^6.15.0"
  31 + },
  32 + "devDependencies": {
  33 + "@babel/core": "^7.22.9",
  34 + "@babel/preset-env": "^7.22.9",
  35 + "@babel/preset-react": "^7.22.5",
  36 + "@svgr/webpack": "^8.1.0",
  37 + "@types/react": "^18.2.21",
  38 + "@types/react-dom": "^18.2.7",
  39 + "babel-loader": "^9.1.3",
  40 + "copy-webpack-plugin": "^11.0.0",
  41 + "css-loader": "^6.8.1",
  42 + "eslint-config-prettier": "^9.0.0",
  43 + "eslint-plugin-prettier": "^5.0.0",
  44 + "file-loader": "^6.2.0",
  45 + "html-webpack-plugin": "^5.5.3",
  46 + "husky": "^8.0.3",
  47 + "less": "^4.2.0",
  48 + "less-loader": "^11.1.3",
  49 + "lint-staged": "^14.0.1",
  50 + "prettier": "^3.0.2",
  51 + "style-loader": "^3.3.3",
  52 + "ts-loader": "^9.4.4",
  53 + "typescript": "^5.2.2",
  54 + "url-loader": "^4.1.1",
  55 + "vite": "^4.4.9",
  56 + "webpack": "^5.88.2",
  57 + "webpack-cli": "^5.1.4",
  58 + "webpack-dev-server": "^4.15.1",
  59 + "webpack-merge": "^5.9.0"
  60 + }
  61 +}
... ...
  1 +import React from 'react';
  2 +import { createRoot } from 'react-dom/client';
  3 +import RouterProvider from './router';
  4 +
  5 +createRoot(document.getElementById('root')!).render(
  6 + <React.StrictMode>
  7 + <RouterProvider />
  8 + </React.StrictMode>,
  9 +);
... ...
  1 +import React, { memo } from 'react';
  2 +import './styles.less';
  3 +
  4 +const About: React.FC<AboutProps> = (props) => {
  5 + return <div className="about">About</div>;
  6 +};
  7 +
  8 +interface AboutProps {}
  9 +
  10 +export default memo(About);
... ...
  1 +.about {
  2 + background-color: #ccc;
  3 +}
... ...
  1 +import React, { memo } from 'react';
  2 +import { Outlet } from 'react-router-dom';
  3 +
  4 +const Root: React.FC = (props) => {
  5 + return (
  6 + <div>
  7 + <Outlet />
  8 + </div>
  9 + );
  10 +};
  11 +
  12 +export default memo(Root);
... ...
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6 + <title>启效云</title>
  7 +</head>
  8 +<body>
  9 + <div id="root"></div>
  10 +</body>
  11 +</html>
... ...
  1 +import { createHashRouter, RouterProvider } from 'react-router-dom';
  2 +import Root from '../page/root';
  3 +import About from '../page/about';
  4 +
  5 +export default () => (
  6 + <RouterProvider
  7 + router={createHashRouter([
  8 + {
  9 + path: '/',
  10 + element: <Root />,
  11 + children: [
  12 + {
  13 + path: '/about',
  14 + element: <About />,
  15 + },
  16 + ],
  17 + },
  18 + ])}
  19 + />
  20 +);
... ...
  1 +import { useState } from 'react';
  2 +import { createStore } from 'hox';
  3 +
  4 +export const [useGlobalStore, GlobalStoreProvider] = createStore(() => {
  5 + const [count, setCount] = useState(0);
  6 +
  7 + const increase = () => {
  8 + setCount(count + 1);
  9 + };
  10 +
  11 + const decrease = () => {
  12 + setCount(count - 1);
  13 + };
  14 +
  15 + return {
  16 + count,
  17 + increase,
  18 + decrease,
  19 + };
  20 +});
... ...
  1 +{
  2 + "compilerOptions": {
  3 + /* Visit https://aka.ms/tsconfig to read more about this file */
  4 +
  5 + /* Projects */
  6 + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
  7 + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
  8 + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
  9 + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
  10 + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
  11 + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
  12 +
  13 + /* Language and Environment */
  14 + "target": "esnext",
  15 + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
  16 + "jsx": "react-jsx", /* Specify what JSX code is generated. */
  17 + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
  18 + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
  19 + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
  20 + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
  21 + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
  22 + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
  23 + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
  24 + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
  25 + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
  26 +
  27 + /* Modules */
  28 + "module": "esnext", /* Specify what module code is generated. */
  29 + // "rootDir": "./", /* Specify the root folder within your source files. */
  30 + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
  31 + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
  32 + "paths": {
  33 + "@/*": ["./src/*"]
  34 + }, /* Specify a set of entries that re-map imports to additional lookup locations. */
  35 + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
  36 + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
  37 + // "types": [], /* Specify type package names to be included without being referenced in a source file. */
  38 + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
  39 + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
  40 + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
  41 + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
  42 + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
  43 + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
  44 + // "resolveJsonModule": true, /* Enable importing .json files. */
  45 + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
  46 + // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
  47 +
  48 + /* JavaScript Support */
  49 + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
  50 + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
  51 + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
  52 +
  53 + /* Emit */
  54 + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
  55 + // "declarationMap": true, /* Create sourcemaps for d.ts files. */
  56 + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
  57 + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
  58 + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
  59 + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
  60 + // "outDir": "./dist", /* Specify an output folder for all emitted files. */
  61 + // "removeComments": true, /* Disable emitting comments. */
  62 + // "noEmit": true, /* Disable emitting files from a compilation. */
  63 + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
  64 + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
  65 + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
  66 + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
  67 + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
  68 + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
  69 + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
  70 + // "newLine": "crlf", /* Set the newline character for emitting files. */
  71 + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
  72 + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
  73 + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
  74 + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
  75 + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
  76 + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
  77 +
  78 + /* Interop Constraints */
  79 + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
  80 + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
  81 + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
  82 + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
  83 + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
  84 + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
  85 +
  86 + /* Type Checking */
  87 + "strict": true, /* Enable all strict type-checking options. */
  88 + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
  89 + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
  90 + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
  91 + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
  92 + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
  93 + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
  94 + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
  95 + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
  96 + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
  97 + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
  98 + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
  99 + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
  100 + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
  101 + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
  102 + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
  103 + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
  104 + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
  105 + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
  106 +
  107 + /* Completeness */
  108 + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
  109 + "skipLibCheck": true /* Skip type checking all .d.ts files. */
  110 + }
  111 +}
... ...