Webpack plugin that AoT compiles your Angular components and modules.
npx @tessl/cli install tessl/npm-ngtools--webpack@20.2.0@ngtools/webpack is a Webpack 5.x plugin for Angular's Ahead-of-Time (AOT) compiler. It provides both webpack plugin and loader functionality for compiling Angular applications and components, supporting both AOT and JIT compilation modes with seamless TypeScript integration.
npm install @ngtools/webpackimport { AngularWebpackPlugin } from '@ngtools/webpack';For additional utilities:
import {
AngularWebpackPlugin,
AngularWebpackPluginOptions,
AngularWebpackLoaderPath,
imageDomains
} from '@ngtools/webpack';import { AngularWebpackPlugin } from '@ngtools/webpack';
// Webpack configuration
export default {
module: {
rules: [
{
test: /\.[jt]sx?$/,
loader: '@ngtools/webpack',
},
],
},
plugins: [
new AngularWebpackPlugin({
tsconfig: './tsconfig.json',
jitMode: false,
directTemplateLoading: true,
}),
],
};@ngtools/webpack is built around several key components:
AngularWebpackPlugin class that integrates with webpack's compilation lifecycleCore webpack plugin for Angular AOT/JIT compilation with comprehensive configuration options for TypeScript integration and Angular-specific build requirements.
class AngularWebpackPlugin {
constructor(options: AngularWebpackPluginOptions);
}
interface AngularWebpackPluginOptions {
tsconfig: string;
compilerOptions?: CompilerOptions;
fileReplacements: Record<string, string>;
substitutions: Record<string, string>;
directTemplateLoading: boolean;
emitClassMetadata: boolean;
emitNgModuleScope: boolean;
emitSetClassDebugInfo?: boolean;
jitMode: boolean;
inlineStyleFileExtension?: string;
}Webpack loader system for processing Angular TypeScript files with Angular compiler integration and resource handling.
function angularWebpackLoader(
this: LoaderContext<unknown>,
content: string,
map: string
): void;
const AngularWebpackLoaderPath: string;Advanced TypeScript compilation system with host augmentation for Angular-specific requirements including dependency collection, resource loading, and file replacements.
function augmentHostWithResources(
host: CompilerHost,
resourceLoader: WebpackResourceLoader,
options: AngularWebpackPluginOptions
): CompilerHost;
function augmentHostWithDependencyCollection(
host: CompilerHost,
dependencies: Map<string, Set<string>>,
moduleResolutionCache: Map<string, ts.ResolvedModule>
): CompilerHost;
function augmentHostWithReplacements(
host: CompilerHost,
replacements: Record<string, string>,
moduleResolutionCache: Map<string, ts.ResolvedModule>
): CompilerHost;Resource loading system for Angular templates and stylesheets with webpack integration and inline processing capabilities.
class WebpackResourceLoader {
get(file: string): Promise<string>;
resolve(url: string, containingFile: string): Promise<string>;
}
const InlineAngularResourceLoaderPath: string;
const InlineAngularResourceSymbol: unique symbol;TypeScript transformers for Angular-specific code modifications including resource replacement, import elision, and JIT support removal.
function replaceResources(
shouldTransform: (fileName: string) => boolean,
getTypeChecker: () => ts.TypeChecker,
inlineStyleFileExtension?: string
): ts.TransformerFactory<ts.SourceFile>;
function elideImports(
sourceFile: ts.SourceFile,
removedNodes: ts.Node[],
getTypeChecker: () => ts.TypeChecker,
compilerOptions: ts.CompilerOptions
): Set<ts.Node>;interface EmitFileResult {
content?: string;
map?: string;
dependencies: readonly string[];
hash?: Uint8Array;
}
type FileEmitter = (file: string) => Promise<EmitFileResult | undefined>;
type DiagnosticsReporter = (diagnostics: readonly Diagnostic[]) => void;
interface InputFileSystemSync extends InputFileSystem {
readFileSync: NonNullable<InputFileSystem['readFileSync']>;
statSync: NonNullable<InputFileSystem['statSync']>;
}
const imageDomains: Set<string>;
const AngularPluginSymbol: unique symbol;