-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
62 lines (50 loc) · 1.89 KB
/
build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
param(
[string]$path=".",
[string]$output="dist",
[string]$tsconfigSource="tsconfig.json"
)
function getTSCompilerOptions($inputFile){
$jsonContent = Get-Content $inputFile -Raw
$jsonObject = ConvertFrom-Json -InputObject $jsonContent
$result;
foreach($item in $jsonObject.compilerOptions.PSObject.Properties){
#We add output within params
if($item.Name -eq "outDir"){
continue
}
$property = $item.Name
$value = $jsonObject.compilerOptions.$property
$result += "--" + $property + " " + $value.ToString().ToLower() + " "
}
return $result
}
if(-not (Test-Path -path $tsconfigSource)) {
throw "Config file doesn't exist"
} else {
$options = getTSCompilerOptions($tsconfigSource)
$files = Get-ChildItem $path -Recurse;
foreach ($item in $files) {
try {
if ($item.Extension -eq ".ts") {
#Build source path
$srcPath = Resolve-Path -Path $item.FullName -Relative
$directoryPath = Resolve-Path -Path $item.Directory -Relative
#Build new path for compiled item
$distPath = "'"
if ($srcPath.Contains("\src")){
$distPath += $directoryPath.Replace(".\src",".\" + $output)
} else {
$distPath += ".\" + $output
}
$distPath += "\" + "'"
#TODO: split used instead
$invokable = "tsc " + $srcPath + " " + $options + " --outDir " + $distPath
Write-Host ("Invoke " + $invokable) -ForegroundColor Green
Invoke-Expression $invokable -ErrorAction SilentlyContinue
}
}
catch {
}
}
}
#remove all js js.map files Get-ChildItem @("*.js","*.js.map") -Recurse | Remove-Item -Force