core/providers/node/angular.go
core/providers/node/angular.goBrowse 1970 files
423 tokens
1,735 bytes
Token encoding: o200k_base
Snapshot 21a254f
← Back to SKILL.md
1package node2 3import (4 "encoding/json"5 "path"6 "strings"7 8 "github.com/railwayapp/railpack/core/generate"9)10 11const (12 DefaultAngularStartCommand = "ng serve"13)14 15func (p *NodeProvider) isAngular(ctx *generate.GenerateContext) bool {16 hasAngularDep := p.hasDependency("@angular/core")17 hasAngularConfig := ctx.App.HasFile("angular.json")18 hasAngularBuildCommand := strings.Contains(strings.ToLower(p.packageJson.GetScript("build")), "ng build")19 20 return hasAngularDep && hasAngularConfig && hasAngularBuildCommand21}22 23type AngularConfig struct {24 Projects map[string]struct {25 Architect struct {26 Build struct {27 Builder string `json:"builder"`28 Options struct {29 OutputPath string `json:"outputPath"`30 Browser string `json:"browser,omitempty"`31 } `json:"options"`32 } `json:"build"`33 } `json:"architect"`34 } `json:"projects"`35}36 37func (p *NodeProvider) getAngularOutputDirectory(ctx *generate.GenerateContext) string {38 angularJson, err := ctx.App.ReadFile("angular.json")39 if err != nil {40 return ""41 }42 43 var config AngularConfig44 if err := json.Unmarshal([]byte(angularJson), &config); err != nil {45 return ""46 }47 48 var projectName string49 if name, _ := ctx.Env.GetConfigVariable("ANGULAR_PROJECT"); name != "" {50 projectName = name51 }52 53 for name, project := range config.Projects {54 if projectName != "" && projectName != name {55 continue56 }57 58 outputPath := project.Architect.Build.Options.OutputPath59 60 // Check if it's using the new application builder or has a browser field61 if project.Architect.Build.Builder == "@angular-devkit/build-angular:application" ||62 project.Architect.Build.Options.Browser != "" {63 return path.Join(outputPath, "browser")64 }65 66 return outputPath67 }68 69 return ""70}71