From 26c600a956c510c7bacc2e3f85d90554237438cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Fri, 14 Dec 2018 13:47:58 +0100 Subject: [PATCH 1/3] feat: move tslint config into a standalone package Introduce a new package "@loopback/tslint-config" and move both configuration files to this new package. --- packages/build/config/tslint.build.json | 21 ++--------- packages/build/config/tslint.common.json | 28 +++------------ packages/build/package.json | 1 + packages/tslint-config/.npmrc | 1 + packages/tslint-config/LICENSE | 25 +++++++++++++ packages/tslint-config/README.md | 43 +++++++++++++++++++++++ packages/tslint-config/package.json | 23 ++++++++++++ packages/tslint-config/tslint.build.json | 23 ++++++++++++ packages/tslint-config/tslint.common.json | 26 ++++++++++++++ 9 files changed, 148 insertions(+), 43 deletions(-) create mode 100644 packages/tslint-config/.npmrc create mode 100644 packages/tslint-config/LICENSE create mode 100644 packages/tslint-config/README.md create mode 100644 packages/tslint-config/package.json create mode 100644 packages/tslint-config/tslint.build.json create mode 100644 packages/tslint-config/tslint.common.json diff --git a/packages/build/config/tslint.build.json b/packages/build/config/tslint.build.json index 819a34736d9c..3479682463c8 100644 --- a/packages/build/config/tslint.build.json +++ b/packages/build/config/tslint.build.json @@ -1,23 +1,6 @@ { "$schema": "http://json.schemastore.org/tslint", "extends": [ - "./tslint.common.json" - ], - // This configuration files enabled rules which require type checking - // and therefore cannot be run by Visual Studio Code TSLint extension - // See https://github.com/Microsoft/vscode-tslint/issues/70 - "rules": { - // These rules find errors related to TypeScript features. - - // These rules catch common errors in JS programming or otherwise - // confusing constructs that are prone to producing bugs. - - // User-land promises like Bluebird implement "PromiseLike" (not "Promise") - // interface only. The string "PromiseLike" bellow is needed to - // tell tslint that it's ok to `await` such promises. - "await-promise": [true, "PromiseLike", "RequestPromise"], - "no-floating-promises": [true, "PromiseLike", "RequestPromise"], - "no-unused-variable": true, - "no-void-expression": [true, "ignore-arrow-function-shorthand"] - } + "@loopback/tslint-config/tslint.build.json" + ] } diff --git a/packages/build/config/tslint.common.json b/packages/build/config/tslint.common.json index 78d35a3e62f3..ef443e976c83 100644 --- a/packages/build/config/tslint.common.json +++ b/packages/build/config/tslint.common.json @@ -1,26 +1,6 @@ { - // See https://palantir.github.io/tslint/rules/ - "rules": { - // These rules find errors related to TypeScript features. - "adjacent-overload-signatures": true, - "prefer-for-of": true, - "unified-signatures": true, - "no-any": true, - - // These rules catch common errors in JS programming or otherwise - // confusing constructs that are prone to producing bugs. - - "label-position": true, - "no-arg": true, - "no-construct": true, - "no-duplicate-variable": true, - - "no-invalid-this": true, - "no-misused-new": true, - "no-shadowed-variable": true, - "no-string-throw": true, - "no-unused-expression": true, - "no-var-keyword": true, - "triple-equals": [true, "allow-null-check", "allow-undefined-check"] - } + "$schema": "http://json.schemastore.org/tslint", + "extends": [ + "@loopback/tslint-config/tslint.common.json" + ] } diff --git a/packages/build/package.json b/packages/build/package.json index 95cf70e26334..d925e6744774 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -13,6 +13,7 @@ "copyright.owner": "IBM Corp.", "license": "MIT", "dependencies": { + "@loopback/tslint-config": "^1.0.0-1", "@types/mocha": "^5.0.0", "@types/node": "^10.11.2", "cross-spawn": "^6.0.5", diff --git a/packages/tslint-config/.npmrc b/packages/tslint-config/.npmrc new file mode 100644 index 000000000000..43c97e719a5a --- /dev/null +++ b/packages/tslint-config/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/tslint-config/LICENSE b/packages/tslint-config/LICENSE new file mode 100644 index 000000000000..aab6c250f951 --- /dev/null +++ b/packages/tslint-config/LICENSE @@ -0,0 +1,25 @@ +Copyright (c) IBM Corp. 2017,2018. All Rights Reserved. +Node module: @loopback/tslint-config +This project is licensed under the MIT License, full text below. + +-------- + +MIT license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/tslint-config/README.md b/packages/tslint-config/README.md new file mode 100644 index 000000000000..1b5f6ed46422 --- /dev/null +++ b/packages/tslint-config/README.md @@ -0,0 +1,43 @@ +# @loopback/tslint-config + +Shared TSLint config to enforce a consistent code style for LoopBack development + +## Installation + +```shell +$ npm install --save @loopback/tslint-config +``` + +## Basic Use + +An example `tslint.json` file: + +```json5 +{ + $schema: 'http://json.schemastore.org/tslint', + extends: ['@loopback/tslint-config/tslint.common.json'], +} +``` + +An example `tslint.buid.json` file: + +```json5 +{ + $schema: 'http://json.schemastore.org/tslint', + extends: ['@loopback/tslint-config/tslint.build.json'], +} +``` + +## Contributions + +- [Guidelines](https://github.com/strongloop/loopback-next/blob/master/docs/CONTRIBUTING.md) +- [Join the team](https://github.com/strongloop/loopback-next/issues/110) + +## Contributors + +See +[all contributors](https://github.com/strongloop/loopback-next/graphs/contributors). + +## License + +MIT diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json new file mode 100644 index 000000000000..4b54d11a73f1 --- /dev/null +++ b/packages/tslint-config/package.json @@ -0,0 +1,23 @@ +{ + "name": "@loopback/tslint-config", + "version": "1.0.0-1", + "description": "", + "engines": { + "node": ">=8.9" + }, + "author": "IBM", + "copyright.owner": "IBM Corp.", + "license": "MIT", + "peerDependencies": { + "tslint": ">=5.11.0" + }, + "files": [ + "README.md", + "tslint.common.json", + "tslint.build.json" + ], + "repository": { + "type": "git", + "url": "https://github.com/strongloop/loopback-next.git" + } +} diff --git a/packages/tslint-config/tslint.build.json b/packages/tslint-config/tslint.build.json new file mode 100644 index 000000000000..819a34736d9c --- /dev/null +++ b/packages/tslint-config/tslint.build.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json.schemastore.org/tslint", + "extends": [ + "./tslint.common.json" + ], + // This configuration files enabled rules which require type checking + // and therefore cannot be run by Visual Studio Code TSLint extension + // See https://github.com/Microsoft/vscode-tslint/issues/70 + "rules": { + // These rules find errors related to TypeScript features. + + // These rules catch common errors in JS programming or otherwise + // confusing constructs that are prone to producing bugs. + + // User-land promises like Bluebird implement "PromiseLike" (not "Promise") + // interface only. The string "PromiseLike" bellow is needed to + // tell tslint that it's ok to `await` such promises. + "await-promise": [true, "PromiseLike", "RequestPromise"], + "no-floating-promises": [true, "PromiseLike", "RequestPromise"], + "no-unused-variable": true, + "no-void-expression": [true, "ignore-arrow-function-shorthand"] + } +} diff --git a/packages/tslint-config/tslint.common.json b/packages/tslint-config/tslint.common.json new file mode 100644 index 000000000000..78d35a3e62f3 --- /dev/null +++ b/packages/tslint-config/tslint.common.json @@ -0,0 +1,26 @@ +{ + // See https://palantir.github.io/tslint/rules/ + "rules": { + // These rules find errors related to TypeScript features. + "adjacent-overload-signatures": true, + "prefer-for-of": true, + "unified-signatures": true, + "no-any": true, + + // These rules catch common errors in JS programming or otherwise + // confusing constructs that are prone to producing bugs. + + "label-position": true, + "no-arg": true, + "no-construct": true, + "no-duplicate-variable": true, + + "no-invalid-this": true, + "no-misused-new": true, + "no-shadowed-variable": true, + "no-string-throw": true, + "no-unused-expression": true, + "no-var-keyword": true, + "triple-equals": [true, "allow-null-check", "allow-undefined-check"] + } +} From 018c26ae170ddfdd3dc89146f7152daf15761122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Fri, 14 Dec 2018 13:55:35 +0100 Subject: [PATCH 2/3] chore: use tslint config from the new package Reconfigure all relevant packages and the monorepo root to load the shared tslint config from `@loopback/tslint-config`. --- examples/hello-world/package.json | 1 + examples/hello-world/tslint.build.json | 2 +- examples/hello-world/tslint.json | 2 +- examples/log-extension/package.json | 1 + examples/log-extension/tslint.build.json | 2 +- examples/log-extension/tslint.json | 2 +- examples/rpc-server/package.json | 1 + examples/rpc-server/tslint.build.json | 2 +- examples/rpc-server/tslint.json | 2 +- examples/soap-calculator/package.json | 1 + examples/soap-calculator/tslint.build.json | 2 +- examples/soap-calculator/tslint.json | 2 +- examples/todo-list/package.json | 1 + examples/todo-list/tslint.build.json | 2 +- examples/todo-list/tslint.json | 2 +- examples/todo/package.json | 1 + examples/todo/tslint.build.json | 2 +- examples/todo/tslint.json | 2 +- packages/authentication/package.json | 1 + packages/boot/package.json | 1 + packages/build/README.md | 29 ++++++++++---------- packages/build/package.json | 3 ++ packages/cli/package.json | 1 + packages/context/package.json | 1 + packages/core/package.json | 1 + packages/http-caching-proxy/package.json | 1 + packages/http-server/package.json | 1 + packages/metadata/package.json | 1 + packages/openapi-spec-builder/package.json | 1 + packages/openapi-v3-types/package.json | 1 + packages/openapi-v3/package.json | 1 + packages/repository-json-schema/package.json | 1 + packages/repository/package.json | 1 + packages/rest-explorer/package.json | 1 + packages/rest/package.json | 1 + packages/service-proxy/package.json | 1 + packages/testlab/package.json | 1 + sandbox/example/package.json | 3 ++ tslint.build.json | 2 +- tslint.json | 2 +- 40 files changed, 58 insertions(+), 28 deletions(-) diff --git a/examples/hello-world/package.json b/examples/hello-world/package.json index e2d5622c7e04..ad119a81186a 100644 --- a/examples/hello-world/package.json +++ b/examples/hello-world/package.json @@ -42,6 +42,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "keywords": [ diff --git a/examples/hello-world/tslint.build.json b/examples/hello-world/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/hello-world/tslint.build.json +++ b/examples/hello-world/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/hello-world/tslint.json b/examples/hello-world/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/hello-world/tslint.json +++ b/examples/hello-world/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/examples/log-extension/package.json b/examples/log-extension/package.json index 35fb8358f9dc..c649874a2389 100644 --- a/examples/log-extension/package.json +++ b/examples/log-extension/package.json @@ -43,6 +43,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/debug": "0.0.30", "@types/node": "^10.11.2" }, diff --git a/examples/log-extension/tslint.build.json b/examples/log-extension/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/log-extension/tslint.build.json +++ b/examples/log-extension/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/log-extension/tslint.json b/examples/log-extension/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/log-extension/tslint.json +++ b/examples/log-extension/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/examples/rpc-server/package.json b/examples/rpc-server/package.json index 795ef9139792..e307fafcd677 100644 --- a/examples/rpc-server/package.json +++ b/examples/rpc-server/package.json @@ -46,6 +46,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/express": "^4.11.1", "@types/node": "^10.11.2", "@types/p-event": "^1.3.0" diff --git a/examples/rpc-server/tslint.build.json b/examples/rpc-server/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/rpc-server/tslint.build.json +++ b/examples/rpc-server/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/rpc-server/tslint.json b/examples/rpc-server/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/rpc-server/tslint.json +++ b/examples/rpc-server/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/examples/soap-calculator/package.json b/examples/soap-calculator/package.json index 3ead05f645fc..e299dbe9ffab 100644 --- a/examples/soap-calculator/package.json +++ b/examples/soap-calculator/package.json @@ -53,6 +53,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/mocha": "^5.0.0", "@types/node": "^10.11.2", "mocha": "^5.1.1", diff --git a/examples/soap-calculator/tslint.build.json b/examples/soap-calculator/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/soap-calculator/tslint.build.json +++ b/examples/soap-calculator/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/soap-calculator/tslint.json b/examples/soap-calculator/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/soap-calculator/tslint.json +++ b/examples/soap-calculator/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/examples/todo-list/package.json b/examples/todo-list/package.json index 05515faae3ce..0ad30e3cadd8 100644 --- a/examples/todo-list/package.json +++ b/examples/todo-list/package.json @@ -50,6 +50,7 @@ "@loopback/build": "^1.0.2", "@loopback/http-caching-proxy": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/lodash": "^4.14.109", "@types/node": "^10.11.2", "lodash": "^4.17.10" diff --git a/examples/todo-list/tslint.build.json b/examples/todo-list/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/todo-list/tslint.build.json +++ b/examples/todo-list/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/todo-list/tslint.json b/examples/todo-list/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/todo-list/tslint.json +++ b/examples/todo-list/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/examples/todo/package.json b/examples/todo/package.json index d1ffcc013742..809f3d3064dd 100644 --- a/examples/todo/package.json +++ b/examples/todo/package.json @@ -50,6 +50,7 @@ "@loopback/build": "^1.0.2", "@loopback/http-caching-proxy": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/lodash": "^4.14.109", "@types/node": "^10.11.2", "lodash": "^4.17.10" diff --git a/examples/todo/tslint.build.json b/examples/todo/tslint.build.json index 0ace3417fa90..121b8adb21a3 100644 --- a/examples/todo/tslint.build.json +++ b/examples/todo/tslint.build.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/examples/todo/tslint.json b/examples/todo/tslint.json index 098c9615a68d..2bb931e66a64 100644 --- a/examples/todo/tslint.json +++ b/examples/todo/tslint.json @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] } diff --git a/packages/authentication/package.json b/packages/authentication/package.json index 54a0cd6eac30..e6c34679db9a 100644 --- a/packages/authentication/package.json +++ b/packages/authentication/package.json @@ -32,6 +32,7 @@ "@loopback/build": "^1.0.2", "@loopback/openapi-spec-builder": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2", "@types/passport": "^0.4.4", "@types/passport-http": "^0.3.6", diff --git a/packages/boot/package.json b/packages/boot/package.json index d4ced865710f..0e2bc7fb7b25 100644 --- a/packages/boot/package.json +++ b/packages/boot/package.json @@ -37,6 +37,7 @@ "@loopback/openapi-v3": "^1.1.4", "@loopback/rest": "^1.5.0", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "files": [ diff --git a/packages/build/README.md b/packages/build/README.md index 48ebdee9ea7d..830423e75f87 100644 --- a/packages/build/README.md +++ b/packages/build/README.md @@ -105,32 +105,33 @@ Now you run the scripts, such as: `lb-tslint` also depends on `tsconfig.build.json` or `tsconfig.json` to reference the project. + **NOTE:** Our recommended configuration of tslint rules is maintained inside + the package `@loopback/tslint-config`. We strongly recommend users to create + their own tslint configuration files inheriting from `@loopback/tslint-config` + instead of relying on the defaults provided by `@loopback/build`. + To customize the configuration: - Create `tslint.build.json` in your project's root directory, for example: + ```json { "$schema": "http://json.schemastore.org/tslint", - "extends": [ - "./node_modules/@loopback/build/config/tslint.common.json" - ], + "extends": ["@loopback/eslint-config/tslint.build.json"], // This configuration files enabled rules which require type checking // and therefore cannot be run by Visual Studio Code TSLint extension // See https://github.com/Microsoft/vscode-tslint/issues/70 "rules": { // These rules find errors related to TypeScript features. - ``` + // These rules catch common errors in JS programming or otherwise + // confusing constructs that are prone to producing bugs. -```json - // These rules catch common errors in JS programming or otherwise - // confusing constructs that are prone to producing bugs. - - "await-promise": true, - "no-floating-promises": true, - "no-void-expression": [true, "ignore-arrow-function-shorthand"] - } -} -``` + "await-promise": true, + "no-floating-promises": true, + "no-void-expression": [true, "ignore-arrow-function-shorthand"] + } + } + ``` - Set options explicitly for the script diff --git a/packages/build/package.json b/packages/build/package.json index d925e6744774..d1d9f998249a 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -42,5 +42,8 @@ "scripts": { "test": "npm run mocha", "mocha": "node bin/run-mocha --timeout 30000 \"test/integration/*.js\"" + }, + "devDependencies": { + "@loopback/tslint-config": "^1.0.0-1" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index a010bc6f7d1e..295d8786ba18 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/ejs": "^2.6.0", "@types/node": "^10.11.2", "glob": "^7.1.2", diff --git a/packages/context/package.json b/packages/context/package.json index e4aaf66f6b38..e63a1029012b 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/bluebird": "^3.5.20", "@types/debug": "^0.0.30", "@types/node": "^10.11.2", diff --git a/packages/core/package.json b/packages/core/package.json index ac785c403de9..2387a64d4adc 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -25,6 +25,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "files": [ diff --git a/packages/http-caching-proxy/package.json b/packages/http-caching-proxy/package.json index 42bef21ca40e..589a32001654 100644 --- a/packages/http-caching-proxy/package.json +++ b/packages/http-caching-proxy/package.json @@ -27,6 +27,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/debug": "^0.0.30", "@types/node": "^10.11.2", "@types/p-event": "^1.3.0", diff --git a/packages/http-server/package.json b/packages/http-server/package.json index 572fc19392d9..ae2be37c1262 100644 --- a/packages/http-server/package.json +++ b/packages/http-server/package.json @@ -23,6 +23,7 @@ "@loopback/build": "^1.0.2", "@loopback/core": "^1.1.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2", "@types/p-event": "^1.3.0", "@types/request-promise-native": "^1.0.15", diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 8a72c6c4a9b2..31fb935aa51a 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/debug": "^0.0.30", "@types/lodash": "^4.14.106", "@types/node": "^10.11.2" diff --git a/packages/openapi-spec-builder/package.json b/packages/openapi-spec-builder/package.json index 6e355efcdf2b..445fd0c02966 100644 --- a/packages/openapi-spec-builder/package.json +++ b/packages/openapi-spec-builder/package.json @@ -26,6 +26,7 @@ }, "devDependencies": { "@loopback/build": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "files": [ diff --git a/packages/openapi-v3-types/package.json b/packages/openapi-v3-types/package.json index e656b22c17b7..89564ab3279e 100644 --- a/packages/openapi-v3-types/package.json +++ b/packages/openapi-v3-types/package.json @@ -11,6 +11,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "scripts": { diff --git a/packages/openapi-v3/package.json b/packages/openapi-v3/package.json index a90dbb94d03c..e634398fee14 100644 --- a/packages/openapi-v3/package.json +++ b/packages/openapi-v3/package.json @@ -10,6 +10,7 @@ "@loopback/openapi-spec-builder": "^1.0.2", "@loopback/repository": "^1.1.0", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/debug": "0.0.30", "@types/lodash": "^4.14.106", "@types/node": "^10.11.2" diff --git a/packages/repository-json-schema/package.json b/packages/repository-json-schema/package.json index 332e7024995d..28760b1ecc1c 100644 --- a/packages/repository-json-schema/package.json +++ b/packages/repository-json-schema/package.json @@ -32,6 +32,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2", "ajv": "^6.5.0" }, diff --git a/packages/repository/package.json b/packages/repository/package.json index a2be74b74ee2..78a56476c8c1 100644 --- a/packages/repository/package.json +++ b/packages/repository/package.json @@ -21,6 +21,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/lodash": "^4.14.108", "@types/node": "^10.11.2" }, diff --git a/packages/rest-explorer/package.json b/packages/rest-explorer/package.json index b3f1e9a14634..43579135906e 100644 --- a/packages/rest-explorer/package.json +++ b/packages/rest-explorer/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/ejs": "^2.6.0", "@types/node": "^10.1.1" }, diff --git a/packages/rest/package.json b/packages/rest/package.json index e491fdd51d7e..adf68a728e5f 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -53,6 +53,7 @@ "@loopback/openapi-spec-builder": "^1.0.2", "@loopback/repository": "^1.1.0", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/debug": "0.0.30", "@types/js-yaml": "^3.11.1", "@types/lodash": "^4.14.106", diff --git a/packages/service-proxy/package.json b/packages/service-proxy/package.json index f22fa316bc81..d6da70cb27af 100644 --- a/packages/service-proxy/package.json +++ b/packages/service-proxy/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@loopback/build": "^1.0.2", "@loopback/testlab": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "dependencies": { diff --git a/packages/testlab/package.json b/packages/testlab/package.json index a0911068a786..0bfcbfbe222b 100644 --- a/packages/testlab/package.json +++ b/packages/testlab/package.json @@ -31,6 +31,7 @@ }, "devDependencies": { "@loopback/build": "^1.0.2", + "@loopback/tslint-config": "^1.0.0-1", "@types/node": "^10.11.2" }, "files": [ diff --git a/sandbox/example/package.json b/sandbox/example/package.json index da6c219c60f7..ecaaa49b28b8 100644 --- a/sandbox/example/package.json +++ b/sandbox/example/package.json @@ -16,5 +16,8 @@ "repository": { "type": "git", "url": "https://github.com/strongloop/loopback-next.git" + }, + "devDependencies": { + "@loopback/tslint-config": "^1.0.0-1" } } diff --git a/tslint.build.json b/tslint.build.json index 888f5ae175b8..9e06ad8757ed 100644 --- a/tslint.build.json +++ b/tslint.build.json @@ -1,6 +1,6 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./packages/build/config/tslint.build.json"], + "extends": ["./packages/tslint-config/tslint.build.json"], "linterOptions": { "exclude": [ "./packages/cli/generators/*/templates/**/*", diff --git a/tslint.json b/tslint.json index 3935f4397a66..ece2731de77f 100644 --- a/tslint.json +++ b/tslint.json @@ -1,6 +1,6 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./packages/build/config/tslint.common.json"], + "extends": ["./packages/tslint-config/tslint.common.json"], "linterOptions": { "exclude": [ "./packages/cli/generators/*/templates/**/*", From dcde6c718f033401990f8237beca405b3f6e790f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Fri, 14 Dec 2018 13:58:44 +0100 Subject: [PATCH 3/3] feat(cli): new projects load tslint config from `@loopback/tslint-config` --- packages/cli/generators/project/templates/package.json.ejs | 1 + .../cli/generators/project/templates/tslint.build.json.ejs | 2 +- packages/cli/generators/project/templates/tslint.json.ejs | 2 +- packages/cli/package.json | 3 ++- packages/cli/test/integration/lib/project-generator.js | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/cli/generators/project/templates/package.json.ejs b/packages/cli/generators/project/templates/package.json.ejs index 9d2b881ad6de..a7ab4202122f 100644 --- a/packages/cli/generators/project/templates/package.json.ejs +++ b/packages/cli/generators/project/templates/package.json.ejs @@ -92,6 +92,7 @@ "devDependencies": { "@loopback/build": "<%= project.dependencies['@loopback/build'] -%>", "@loopback/testlab": "<%= project.dependencies['@loopback/testlab'] -%>", + "@loopback/tslint-config": "<%= project.dependencies['@loopback/tslint-config'] -%>", "@types/node": "<%= project.dependencies['@types/node'] -%>" } } diff --git a/packages/cli/generators/project/templates/tslint.build.json.ejs b/packages/cli/generators/project/templates/tslint.build.json.ejs index 0ace3417fa90..121b8adb21a3 100644 --- a/packages/cli/generators/project/templates/tslint.build.json.ejs +++ b/packages/cli/generators/project/templates/tslint.build.json.ejs @@ -1,4 +1,4 @@ { "$schema": "http://json.schemastore.org/tslint", - "extends": ["./node_modules/@loopback/build/config/tslint.build.json"] + "extends": ["@loopback/tslint-config/tslint.build.json"] } diff --git a/packages/cli/generators/project/templates/tslint.json.ejs b/packages/cli/generators/project/templates/tslint.json.ejs index 174657df8c36..ba2c5312b7d2 100644 --- a/packages/cli/generators/project/templates/tslint.json.ejs +++ b/packages/cli/generators/project/templates/tslint.json.ejs @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/tslint", <% if (project.loopbackBuild) { -%> - "extends": ["./node_modules/@loopback/build/config/tslint.common.json"] + "extends": ["@loopback/tslint-config/tslint.common.json"] <% } else { -%> // See https://palantir.github.io/tslint/rules/ "rules": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 295d8786ba18..c61b8a21e254 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -113,7 +113,8 @@ "@loopback/http-server": "^1.1.1", "@loopback/example-todo-list": "^1.3.0", "@loopback/dist-util": "^0.4.0", - "@loopback/rest-explorer": "^1.1.3" + "@loopback/rest-explorer": "^1.1.3", + "@loopback/tslint-config": "^1.0.0-1" } }, "copyright.owner": "IBM Corp.", diff --git a/packages/cli/test/integration/lib/project-generator.js b/packages/cli/test/integration/lib/project-generator.js index 0726fd8359db..b3570e2e2833 100644 --- a/packages/cli/test/integration/lib/project-generator.js +++ b/packages/cli/test/integration/lib/project-generator.js @@ -249,7 +249,7 @@ module.exports = function(projGenerator, props, projectType) { assert.jsonFileContent('package.json', props); assert.fileContent([ ['package.json', '@loopback/build'], - ['tslint.json', '@loopback/build'], + ['tslint.json', '@loopback/tslint-config'], ['tsconfig.json', '@loopback/build'], ]); assert.noFileContent([