ng-di-transpiler
raw JSON →ng-di-transpiler v0.1.10 is a dependency injection transpiler for Angular that generates platform-specific provider files at build time. It allows developers to define interfaces for tokens and create typed provider configurations, which are then transpiled into compiled provider files. The tool is designed for Angular 2+ applications and aims to reduce boilerplate and improve type safety in DI setup. It is still in early stages (v0.1.x) with experimental features like interface-based tokens. Alternatives include Angular's built-in provider factories or custom AOT compilation setups, but this package provides a dedicated transpilation step. Release cadence is sporadic with occasional bug fixes. Ships TypeScript types and uses a CLI command (ngdt) for integration.
Common errors
error Cannot find name 'TokenProviders' ↓
error Type 'typeof SomeClass' is not assignable to type 'TokenProvider<T>' ↓
error ngdt: command not found ↓
error No provider for TokenProviders ↓
Warnings
gotcha Experimental interface-as-token feature (v0.1.0) lacks tests and may be unstable. ↓
gotcha Type checking relies on the variable type annotation; incorrect type may cause transpilation to skip or generate wrong code. ↓
gotcha Only files matching the glob pattern are transpiled; mismatched patterns result in no output. ↓
Install
npm install ng-di-transpiler yarn add ng-di-transpiler pnpm add ng-di-transpiler Imports
- TokenProviders wrong
const TokenProviders = require('ng-di-transpiler')correctimport { TokenProviders } from 'ng-di-transpiler' - TokenProvider
import { TokenProvider } from 'ng-di-transpiler' - ngdtOptions
import { ngdtOptions } from 'ng-di-transpiler' - default (CLI) wrong
const ngdt = require('ng-di-transpiler').defaultcorrectUse CLI command 'ngdt' directly as a script or npx
Quickstart
// 1. Define platform tokens interface
import { TokenProviders, TokenProvider } from 'ng-di-transpiler';
import { OpaqueToken } from '@angular/core';
interface ConsoleLike {
log(msg: string): void;
}
export const CONSOLE_TOKEN = new OpaqueToken('console');
export interface PlatformTokens extends TokenProviders {
console: ConsoleProvider;
}
export class ConsoleProvider extends TokenProvider<ConsoleLike> {
provider: CONSOLE_TOKEN;
}
// 2. Create platform provider file: providers.browser.ts
import { PlatformTokens, ConsoleProvider } from './platform-tokens';
class BrowserLogger { log(msg: string) { console.log(msg); } }
export const TOKENS: PlatformTokens = {
console: new ConsoleProvider(BrowserLogger)
};
// 3. Run CLI to compile: ngdt --files "src/**/providers.browser.ts" --postfix .compiled
// Generates providers.browser.compiled.ts