diff --git a/tools/build_rules/js/BUILD b/tools/build_rules/js/BUILD
new file mode 100644
index 0000000..2381fcb
--- /dev/null
+++ b/tools/build_rules/js/BUILD
@@ -0,0 +1,22 @@
+load("@npm//:@angular/compiler-cli/package_json.bzl", angular_compiler_cli = "bin")
+load(":ts.bzl", "ts_project")
+
+# Define the @angular/compiler-cli ngc bin binary as a target
+angular_compiler_cli.ngc_binary(
+    name = "ngc",
+    visibility = ["//visibility:public"],
+)
+
+# ESBuild plugin to run the Angular linker
+ts_project(
+    name = "ngc.esbuild",
+    srcs = ["ngc.esbuild.ts"],
+    tsconfig = "//:tsconfig.node",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//:node_modules/@angular/compiler-cli",
+        "//:node_modules/@babel/core",
+        #"//:node_modules/@types/babel__core",
+        "//:node_modules/@types/node",
+    ],
+)
diff --git a/tools/build_rules/js/ng.bzl b/tools/build_rules/js/ng.bzl
new file mode 100644
index 0000000..0a0f1e1
--- /dev/null
+++ b/tools/build_rules/js/ng.bzl
@@ -0,0 +1,25 @@
+load("@aspect_rules_esbuild//esbuild:defs.bzl", "esbuild")
+load(":ts.bzl", "ts_project")
+
+def ng_project(name, **kwargs):
+    """The rules_js ts_project() configured with the Angular ngc compiler.
+    """
+    ts_project(
+        name = name,
+
+        # Compiler
+        tsc = "//tools/build_rules/js:ngc",
+
+        # Any other ts_project() or generic args
+        **kwargs
+    )
+
+def ng_esbuild(name, **kwargs):
+    """The rules_esbuild esbuild() configured with the Angular linker configuration
+    """
+
+    esbuild(
+        name = name,
+        config = "//tools/build_rules/js:ngc.esbuild.js",
+        **kwargs
+    )
diff --git a/tools/build_rules/js/ngc.esbuild.ts b/tools/build_rules/js/ngc.esbuild.ts
new file mode 100644
index 0000000..b10fd25
--- /dev/null
+++ b/tools/build_rules/js/ngc.esbuild.ts
@@ -0,0 +1,60 @@
+/**
+ * ESBuild plugin to run the angular linker via babel plugin while bundling.
+ *
+ * Inspired by:
+ *
+ *  Internal angular/dev-infra-private-builds esbuild plugin
+ *  - https://github.com/angular/dev-infra-private-builds/blob/afcc2494c45a63660cb560ee96179969610435db/shared-scripts/angular-linker/esbuild-plugin.mjs
+ *  Rollup
+ *   - https://github.com/angular/angular/blob/14.0.5/integration/ng_elements/rollup.config.mjs
+ *  Webpack
+ *  - https://github.com/angular/angular-cli/blob/14.0.5/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts#L97-L114
+ */
+
+import { transformFileAsync } from '@babel/core';
+import {
+  ConsoleLogger,
+  NodeJSFileSystem,
+  LogLevel,
+} from '@angular/compiler-cli';
+import { createEs2015LinkerPlugin } from '@angular/compiler-cli/linker/babel';
+
+const linkerBabelPlugin = createEs2015LinkerPlugin({
+  fileSystem: new NodeJSFileSystem(),
+  logger: new ConsoleLogger(LogLevel.warn),
+  unknownDeclarationVersionHandling: 'error',
+  // Must enable JIT for unit tests
+  // TODO: would be ideal to only set this for tests
+  linkerJitMode: true,
+  // Workaround for https://github.com/angular/angular/issues/42769 and https://github.com/angular/angular-cli/issues/22647.
+  sourceMapping: false,
+});
+
+const ngLinkerPlugin = {
+  name: 'ng-linker-esbuild',
+  setup(build: any) {
+    build.onLoad({ filter: /node_modules/ }, async (args: any) => {
+      const filePath = args.path;
+      const transformResult = await transformFileAsync(filePath, {
+        filename: filePath,
+        filenameRelative: filePath,
+        plugins: [linkerBabelPlugin],
+        sourceMaps: 'inline',
+        compact: false,
+      });
+
+      if (!transformResult) {
+        throw new Error('Babel NG Linker error');
+      }
+
+      return { contents: transformResult.code };
+    });
+  },
+};
+
+export default {
+  // Ensure only [m]js is consumed. Any typescript should be precompiled
+  // and not consumed by esbuild.
+  resolveExtensions: ['.mjs', '.js'],
+  plugins: [ngLinkerPlugin],
+};
diff --git a/tools/build_rules/js/ts.bzl b/tools/build_rules/js/ts.bzl
new file mode 100644
index 0000000..a5b0770
--- /dev/null
+++ b/tools/build_rules/js/ts.bzl
@@ -0,0 +1,20 @@
+load("@aspect_rules_ts//ts:defs.bzl", _ts_project = "ts_project")
+
+def ts_project(name, **kwargs):
+    """ts_project() macro with default tsconfig and aligning params.
+    """
+
+    _ts_project(
+        name = name,
+
+        # Default tsconfig and aligning attributes
+        tsconfig = kwargs.pop("tsconfig", "//:tsconfig"),
+        declaration = kwargs.pop("declaration", True),
+        declaration_map = kwargs.pop("declaration_map", True),
+        source_map = kwargs.pop("source_map", True),
+
+        # TODO(phil): Is this a good idea? I don't _actually_ know what this
+        # does.
+        supports_workers = False,
+        **kwargs
+    )
