This module contains a set of common scripts and default configurations to build LoopBack 4 or other TypeScript modules, including:
- lb-tsc: Use
tsc
to compile typescript files - lb-tslint: Run
tslint
- lb-prettier: Run
prettier
- lb-mocha: Run
mocha
to execute test cases - lb-nyc: Run
nyc
- lb-dist: Detect the correct distribution target:
dist
=> ES2017,dist6
=> ES2015. The command is deprecated aslb-mocha
detects the distribution target now.
These scripts first try to locate the CLI from target project dependencies and
fall back to bundled ones in @loopback/build
.
To use @loopback/build
for your package:
- Run the following command to add
@loopback/build
as a dev dependency.
npm i @loopback/build --save-dev
- Configure your project package.json as follows:
"scripts": {
"build": "lb-tsc",
"build:watch": "lb-tsc --watch",
"clean": "lb-clean",
"lint": "npm run prettier:check && npm run tslint",
"lint:fix": "npm run prettier:fix && npm run tslint:fix",
"prettier:cli": "lb-prettier \"**/*.ts\" \"**/*.js\"",
"prettier:check": "npm run prettier:cli -- -l",
"prettier:fix": "npm run prettier:cli -- --write",
"tslint": "lb-tslint",
"tslint:fix": "npm run tslint -- --fix",
"pretest": "npm run clean && npm run build",
"test": "lb-mocha \"dist/test\"",
"posttest": "npm run lint",
"start": "npm run build && node .",
"prepublishOnly": "npm run test"
},
Please remember to replace your-module-name
with the name of your module.
Now you run the scripts, such as:
npm run build
- Compile TypeScript files and copy resources (non.ts
files) to outDirnpm test
- Run all mocha testsnpm run lint
- Runtslint
andprettier
on source files
- Override default configurations in your project
-
lb-tsc
By default,
lb-tsc
searches your project's root directory fortsconfig.build.json
thentsconfig.json
. If neither of them exists, atsconfig.json
will be created to extend from@loopback/build/config/tsconfig.common.json
.To customize the configuration:
-
Create
tsconfig.build.json
ortsconfig.json
in your project's root directory{ "$schema": "http://json.schemastore.org/tsconfig", "extends": "@loopback/build/config/tsconfig.common.json", "compilerOptions": { "rootDir": "." }, "include": ["src", "test"] }
-
Set options explicity for the script
lb-tsc -p tsconfig.json --target es2017 --outDir dist
For more information, see https://www.typescriptlang.org/docs/handbook/compiler-options.html.
-
The following un-official compiler options are available:
Option Description --copy-resources
Copy all non-typescript files from src
andtest
tooutDir
, preserving their relative paths.
-
-
lb-tslint
By default,
lb-tslint
searches your project's root directory fortslint.build.json
thentslint.json
. If neither of them exists, it falls back to./node_modules/@loopback/build/config/tslint.common.json
.lb-tslint
also depends ontsconfig.build.json
ortsconfig.json
to reference the project.To customize the configuration:
- Create
tslint.build.json
in your project's root directory, for example:{ "$schema": "http://json.schemastore.org/tslint", "extends": [ "./node_modules/@loopback/build/config/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.
- Create
// 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"]
}
}
-
Set options explicitly for the script
lb-tslint -c tslint.json -p tsconfig.json
For more information, see https://palantir.github.io/tslint/usage/cli/.
- Run builds
npm run build
run npm test
from the root folder.
See all contributors.
MIT