zoukankan      html  css  js  c++  java
  • vscode配置typescript和eslint的环境

    一、typescript配置

    tsconfig.build.json

    {
      "extends": "./tsconfig.json",
      "compilerOptions": {
        "outDir": "./deploy/dist",
      },
      "exclude": ["node_modules", "dist", "test", "**/*spec.ts"]
    }

    tsconfig.json

    {
      "compilerOptions": {
        "lib": ["es5", "es6"],
        "target": "es6",
        "module": "commonjs",
        "baseUrl": ".",
        "paths": {
            "@common/*":["src/common/*"],
            "@configuration/*":["src/modules/configuration"],
            "@creative/*": ["src/modules/creative/*"],
            "@admin/*": ["src/modules/admin/*"],
            "@auth/*":["src/modules/auth/*"],
        },
        // 允许编译javascript文件
        "allowJs": true,
        // 报告.js文件中的错误。与allowJs一起使用
        "checkJs": true,
        // "plugins": [],
        // 若有未使用的局部变量则抛错
        "noUnusedLocals": false,
        // 若有未使用的参数则抛错
        "noUnusedParameters": false,
        // 类型为any时,是否需要发出警告,设置true,则不警告
        "noImplicitAny": false,
        // 提供迭代器全面支持
        "downlevelIteration": true,
        // 去掉注解
        "removeComments": true,
        // 从tslib导入外部的辅助方法
        "importHelpers": true,
        // 遇到@internal注解时,不会触发代码定义
        "stripInternal": true,
        // 错误信息,跟踪信息将带有颜色和样式
        "pretty": true,
        // 如果不是函数中的所有路径都有返回值,则提示Error
        "noImplicitReturns": true,
        // 允许从没有设置默认导出的模块中默认导入
        "allowSyntheticDefaultImports": true,
        // 使用元数据特性
        "emitDecoratorMetadata": true,
        // 支持ES7的装饰器特性
        "experimentalDecorators": true,
        // 将严格校验switch-case语法
        "noFallthroughCasesInSwitch": true,
        // 严格null检查模式,null和undefined值不包含在任何类型里
        "strictNullChecks": true,
        // 保存上一次的编译信息,下一次进行增量更新
        "incremental": false,
        // 不生成定义文件d.ts
        "declaration": false,
        // 生成.map文件
        "sourceMap": false,
        // 跳过默认库检查
        "skipLibCheck": true,
        // 输出文件的根目录
        "outDir": "./dist",
        // 模块的解析策略
        // "moduleResolution": "node",
      },
      "include": ["src/**/*", "test/**/*"],
      "exclude": ["node_modules", "dist", "test", "**/*spec.ts"]
    }
    

     

    二、lint配置

    .eslintrc

    {
      "parser": "@typescript-eslint/parser",
      "plugins": ["@typescript-eslint", "prettier"],
      "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended",
        "plugin:prettier/recommended",
        "standard",
        "prettier/@typescript-eslint",
        "prettier"
      ],
      "parserOptions": {
        "project": "./tsconfig.json"
      },
      "rules": {
        "no-useless-constructor": "off",
        "@typescript-eslint/indent": ["error", 4, { "VariableDeclarator": 4, "SwitchCase": 1 }],
        "@typescript-eslint/no-unused-vars": ["error", {
            "vars": "all",
            "args": "none",
            "ignoreRestSiblings": true
          }],
        "@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
        "@typescript-eslint/explicit-function-return-type": ["off",
          {
            "allowExpressions": true,
            "allowTypedFunctionExpressions": true
          }],
        "@typescript-eslint/interface-name-prefix": 0,
        "@typescript-eslint/no-explicit-any": "off",
        "@typescript-eslint/no-use-before-define": "off",
        "@typescript-eslint/no-parameter-properties": 0,
        "@typescript-eslint/camelcase": ["off", {"properties": "always"}],
        "no-console": ["warn", { "allow": ["warn", "error"] }],
        "eqeqeq": ["warn", "always"]
      },
      "env": {
        "node": true,
        "es6": true,
        "mocha": true,
        "jest": true
      }
    }
    

    tslint.json

    {
      "defaultSeverity": "error",
      "extends": ["tslint:recommended", "tslint-config-prettier"],
      "jsRules": {
        "no-unused-expression": true
      },
      "rules": {
        "eofline": false,
        "quotemark": [true, "single"],
        "indent": false,
        "member-access": [false],
        "ordered-imports": [false],
        "max-line-length": [true, 450],
        "member-ordering": [false],
        "curly": false,
        "interface-name": [false],
        "array-type": [false],
        "no-empty-interface": false,
        "no-empty": false,
        "arrow-parens": false,
        "object-literal-sort-keys": false,
        "no-unused-expression": false,
        "max-classes-per-file": false,
        "variable-name": [false],
        "one-line": [false],
        "one-variable-per-declaration": [false],
        "semicolon": [true, "always", "ignore-bound-class-methods"],
        "no-console": [false],
        "space-before-function-paren": false,
        "no-shadowed-variable": false
      },
      "rulesDirectory": []
    }
    

    .prettierrc.js  

    module.exports = {
        // 一行最多 100 字符
        printWidth: 400,
        // 使用 4 个空格缩进
        tabWidth: 4,
        // 不使用缩进符,而使用空格
        useTabs: false,
        // 行尾需要有分号
        semi: true,
        // 使用单引号
        singleQuote: true,
        // 末尾不需要逗号
        trailingComma: "es5",
        // 大括号内的首尾需要空格
        bracketSpacing: true,
        // 箭头函数,只有一个参数的时候,也需要括号
        arrowParens: "always",
        parser: 'typescript'
    };
    

      

    相关依赖

    "scripts": {
        "build": "rimraf dist && tsc -p tsconfig.json",
        "format": "prettier --write "src/**/*.ts" "test/**/*.ts"",
        "start": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",
        "start:dev": "rimraf dist && cross-env NODE_ENV=development concurrently --handle-input "wait-on dist/main.js && nodemon" "tsc -w -p tsconfig.build.json" ",
        "start:debug": "nodemon --config nodemon-debug.json",
        "start:dist": "node dist/main.js",
        "pm2:prd": "pm2 start ./bin/app.config.js --env production",
        "pm2:preprd": "pm2 start ./bin/app.config.js --env preproduction",
        "pm2:deve": "pm2 start ./bin/app.config.js --env development",
        "pm2:stop": "pm2 stop youtu-service",
        "pm2:restart": "pm2 restart youtu-service",
        "pm2:delete": "pm2 delete youtu-service",
        "lint": "eslint 'src/**/*.{ts,js}' --fix",
        "lint:ts": "tslint -p tsconfig.json -c tslint.json",
        "test": "jest",
        "test:watch": "jest --watch",
        "test:cov": "jest --coverage",
        "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
        "test:e2e": "jest --config ./test/jest-e2e.json",
        "docs": "compodoc -p tsconfig.json -s"
      },
    "devDependencies": {
        "@nestjs/testing": "^6.3.2",
        "@types/es6-shim": "^0.31.39",
        "@types/express": "^4.17.0",
        "@types/jest": "^24.0.15",
        "@types/lodash": "^4.14.135",
        "@types/node": "^12.0.10",
        "@types/supertest": "^2.0.7",
        "@typescript-eslint/eslint-plugin": "^1.11.0",
        "@typescript-eslint/parser": "^1.11.0",
        "concurrently": "^4.1.1",
        "eslint": "^6.0.1",
        "eslint-config-prettier": "^6.0.0",
        "eslint-config-standard": "^12.0.0",
        "eslint-plugin-import": "^2.18.0",
        "eslint-plugin-node": "^9.1.0",
        "eslint-plugin-prettier": "^3.1.3",
        "eslint-plugin-promise": "^4.2.1",
        "eslint-plugin-standard": "^4.0.0",
        "jest": "^24.8.0",
        "nodemon": "^1.19.1",
        "prettier": "^1.18.2",
        "rimraf": "^2.6.3",
        "supertest": "^3.4.2",
        "ts-jest": "^23.10.5",
        "ts-loader": "^4.5.0",
        "ts-node": "^7.0.1",
        "tsconfig-paths": "^3.8.0",
        "tslint": "^5.11.0",
        "tslint-config-prettier": "^1.18.0",
        "typescript": "^3.7.3",
        "wait-on": "^3.2.0"
      },
      "engines": {
        "node": ">=8.9.0"
      },
      "jest": {
        "moduleFileExtensions": [
          "js",
          "json",
          "ts"
        ],
        "rootDir": "src",
        "testRegex": ".spec.ts$",
        "transform": {
          "^.+\.(t|j)s$": "ts-jest"
        },
        "collectCoverageFrom": [
          "**/*.(t|j)s"
        ],
        "coverageDirectory": "../coverage",
        "testEnvironment": "node"
      }
    

      

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 阮小二买彩票
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    让程序后台隐藏运行
    只要你喜欢,并且可以养家糊口,就是好的
  • 原文地址:https://www.cnblogs.com/terrylin/p/12796830.html
Copyright © 2011-2022 走看看