1
+ load ("@npm//:defs.bzl" , "npm_link_all_packages" )
2
+ load ("@aspect_rules_esbuild//esbuild:defs.bzl" , "esbuild" )
3
+ load ("@aspect_rules_js//js:defs.bzl" , "js_library" )
4
+ load ("@aspect_rules_js//npm:defs.bzl" , "npm_package" )
5
+ load ("@aspect_rules_ts//ts:defs.bzl" , "ts_project" , "ts_config" )
6
+ load ("@bazel_skylib//rules:write_file.bzl" , "write_file" )
7
+
8
+ npm_link_all_packages (name = "node_modules" )
9
+
10
+ src_files = glob (["src/**/*.ts" ])
11
+
12
+ npm_package (
13
+ name = "package" ,
14
+ package = "autolinker" ,
15
+ srcs = [
16
+ ":library"
17
+ ] + src_files , # include the src files for source maps to reference
18
+ )
19
+
20
+ js_library (
21
+ name = "library" ,
22
+ srcs = [
23
+ ":src_esm" ,
24
+ ":src_cjs" ,
25
+ ],
26
+ deps = [
27
+ ":esm_declarations" ,
28
+ ":cjs_declarations" ,
29
+ ]
30
+ )
31
+
32
+ esbuild (
33
+ name = "src_esm" ,
34
+ entry_point = "src/index.ts" ,
35
+ srcs = src_files ,
36
+ output = "esm/index.mjs" ,
37
+ sourcemap = "linked" ,
38
+ format = "esm" ,
39
+ target = "es2022" ,
40
+ platform = "node" ,
41
+ tsconfig = ":tsconfig" ,
42
+ )
43
+
44
+ esbuild (
45
+ name = "src_cjs" ,
46
+ entry_point = "src/index.ts" ,
47
+ srcs = src_files ,
48
+ output = "cjs/index.cjs" ,
49
+ sourcemap = "linked" ,
50
+ format = "cjs" ,
51
+ target = "es2022" ,
52
+ platform = "node" ,
53
+ tsconfig = ":tsconfig" ,
54
+ )
55
+
56
+ ts_project (
57
+ name = "esm_declarations" ,
58
+ srcs = src_files ,
59
+ root_dir = "src" ,
60
+ out_dir = "esm" ,
61
+ source_map = True ,
62
+ emit_declaration_only = True ,
63
+ declaration = True ,
64
+ declaration_map = True ,
65
+ tsconfig = ":tsconfig_esm" ,
66
+ )
67
+
68
+ ts_config (
69
+ name = "tsconfig_esm" ,
70
+ src = "tsconfig-esm.json" ,
71
+ deps = ["tsconfig.json" ],
72
+ )
73
+
74
+ write_file (
75
+ name = "tsconfig_esm_file" ,
76
+ out = "tsconfig-esm.json" ,
77
+ content = ["""
78
+ {
79
+ "extends": "./tsconfig.json",
80
+ "compilerOptions": {
81
+ "target": "esnext",
82
+ "module": "esnext",
83
+ "noEmit": false
84
+ }
85
+ }
86
+ """ ]
87
+ )
88
+
89
+ ts_project (
90
+ name = "cjs_declarations" ,
91
+ srcs = src_files ,
92
+ root_dir = "src" ,
93
+ out_dir = "cjs" ,
94
+ source_map = True ,
95
+ emit_declaration_only = True ,
96
+ declaration = True ,
97
+ declaration_map = True ,
98
+ tsconfig = ":tsconfig_cjs" ,
99
+ )
100
+
101
+ ts_config (
102
+ name = "tsconfig_cjs" ,
103
+ src = "tsconfig-cjs.json" ,
104
+ deps = ["tsconfig.json" ],
105
+ )
106
+
107
+ write_file (
108
+ name = "tsconfig_cjs_file" ,
109
+ out = "tsconfig-cjs.json" ,
110
+ content = ["""
111
+ {
112
+ "extends": "./tsconfig.json",
113
+ "compilerOptions": {
114
+ "target": "esnext",
115
+ "module": "commonjs",
116
+ "noEmit": false
117
+ }
118
+ }
119
+ """ ]
120
+ )
121
+
122
+ ts_config (
123
+ name = "tsconfig" ,
124
+ src = "tsconfig.json" ,
125
+ visibility = [":__subpackages__" ],
126
+ )
0 commit comments