A comprehensive set of build tools and configurations for LoopBack 4 and TypeScript projects providing CLI commands for compilation, linting, testing, and coverage
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
TypeScript compiler wrapper providing enhanced functionality for LoopBack 4 projects including ttypescript support, resource copying, and automatic configuration generation.
Compiles TypeScript files with automatic configuration discovery and enhanced features.
/**
* TypeScript compiler function with enhanced features
* @param argv - Command line arguments including options
* @param options - Execution options for dry run and process control
* @returns ChildProcess when executed, string when dry run
*/
function tsc(argv: string[], options?: RunOptions): ChildProcess | string;CLI Usage:
# Standard TypeScript compilation
lb-tsc
# Watch mode
lb-tsc --watch
# Custom target and output directory
lb-tsc --target es2017 --outDir dist
# Copy non-TypeScript resources
lb-tsc --copy-resources
# Use ttypescript for plugins
lb-ttsc
# or
lb-tsc --use-ttypescript
# Custom project file
lb-tsc -p tsconfig.build.jsonProgrammatic Usage:
import { tsc } from "@loopback/build";
// Compile with default settings
const child = tsc(process.argv);
// Dry run to see command
const command = tsc(["--watch"], { dryRun: true });
console.log(command); // "node .../tsc --watch"
// Custom working directory
tsc(["--outDir", "build"], { cwd: "/path/to/project" });Automatically discovers and creates TypeScript configuration files.
Configuration Search Order:
tsconfig.build.json in project roottsconfig.json in project roottsconfig.json extending @loopback/build/config/tsconfig.common.jsonAuto-generated Configuration:
{
"extends": "@loopback/build/config/tsconfig.common.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": ["src"]
}Optional integration with ttypescript for TypeScript plugin support.
// lb-ttsc automatically uses ttypescript if available
// lb-tsc --use-ttypescript flag enables ttypescriptRequirements:
ttypescript package must be installedCopies non-TypeScript files from source to output directory.
// --copy-resources flag enables file copying
// Copies all non-.ts files from src/ and test/ directories
// Preserves relative directory structureUsage Examples:
# Copy resources during compilation
lb-tsc --copy-resources
# Copy resources with custom configuration
lb-tsc --copy-resources --outDir build --rootDir srcCopied File Patterns:
src/ directory (excluding .ts files)test/ directory (excluding .ts files)rootDirSupports TypeScript composite projects with tsc -b build mode.
// Automatically detects composite projects via tsconfig references
// Uses 'tsc -b' for composite project builds
// Filters invalid arguments for build modeUsage:
// tsconfig.json with references
{
"references": [
{ "path": "./packages/core" },
{ "path": "./packages/utils" }
]
}Additional compiler options specific to @loopback/build.
interface CompilerOptions {
"--copy-resources": boolean; // Copy non-TS files to outDir
"--use-ttypescript": boolean; // Use ttypescript instead of tsc
"--target": string; // TypeScript compilation target
"--outDir": string; // Output directory
"-p" | "--project": string; // Project file path
}Option Processing:
Base configuration provided by @loopback/build.
// config/tsconfig.common.json contents:
interface TypeScriptConfig {
compilerOptions: {
emitDecoratorMetadata: true;
experimentalDecorators: true;
resolveJsonModule: true;
skipLibCheck: true;
strict: true;
strictPropertyInitialization: false;
useUnknownInCatchVariables: false;
incremental: true;
lib: ["es2020"];
module: "commonjs";
esModuleInterop: true;
moduleResolution: "node";
target: "es2018";
sourceMap: true;
declaration: true;
importHelpers: true;
};
}