45 lines
1.4 KiB
Text
45 lines
1.4 KiB
Text
import("npm.gni")
|
|
|
|
template("typescript_build") {
|
|
assert(defined(invoker.tsconfig), "Need tsconfig name to run")
|
|
assert(defined(invoker.sources), "Need tsc sources to run")
|
|
assert(defined(invoker.output_dir_name),
|
|
"Need output_dir_name to run, should be 'lib' or other top level dir")
|
|
assert(defined(invoker.output_gen_dir),
|
|
"Need output_gen_dir to run, should be relative to the root gen dir")
|
|
|
|
npm_action(target_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"deps",
|
|
"public_deps",
|
|
"outputs",
|
|
])
|
|
script = "tsc"
|
|
|
|
sources = invoker.sources
|
|
inputs = [
|
|
invoker.tsconfig,
|
|
"//electron/tsconfig.json",
|
|
"//electron/yarn.lock",
|
|
"//electron/typings/internal-ambient.d.ts",
|
|
"//electron/typings/internal-electron.d.ts",
|
|
]
|
|
|
|
base_out_path = invoker.output_gen_dir + "/electron/"
|
|
args = [
|
|
"-p",
|
|
rebase_path(invoker.tsconfig),
|
|
"--outDir",
|
|
rebase_path("$base_out_path" + invoker.output_dir_name),
|
|
]
|
|
|
|
outputs = []
|
|
|
|
foreach(invoker_source, invoker.sources) {
|
|
# The output of TSC is all inputs but with JS instead of TS as the extension
|
|
outputs += [ "$base_out_path" + get_path_info(invoker_source, "dir") +
|
|
"/" + get_path_info(invoker_source, "name") + ".js" ]
|
|
}
|
|
}
|
|
}
|