diff --git a/server/nodejs.go b/server/nodejs.go index bc5a23a8c..093bedf47 100644 --- a/server/nodejs.go +++ b/server/nodejs.go @@ -145,22 +145,22 @@ type Node struct { npmRegistry string } -func checkNode() (node *Node, err error) { +func checkNode(nodePrefix string) (node *Node, err error) { var installed bool CheckNodejs: version, major, err := getNodejsVersion() if err != nil || major < minNodejsVersion { PATH := os.Getenv("PATH") - nodeBinDir := "/usr/local/nodejs/bin" + nodeBinDir := fmt.Sprintf("%s/bin", nodePrefix) if !strings.Contains(PATH, nodeBinDir) { os.Setenv("PATH", fmt.Sprintf("%s%c%s", nodeBinDir, os.PathListSeparator, PATH)) goto CheckNodejs } else if !installed { - err = os.RemoveAll("/usr/local/nodejs") + err = os.RemoveAll(nodePrefix) if err != nil { return } - err = installNodejs("/usr/local/nodejs", nodejsLatestLTS) + err = installNodejs(nodePrefix, nodejsLatestLTS) if err != nil { return } diff --git a/server/server.go b/server/server.go index c60fec0af..39e0730e7 100644 --- a/server/server.go +++ b/server/server.go @@ -49,6 +49,7 @@ func Serve(efs *embed.FS) { cdnDomainChina string unpkgDomain string etcDir string + nodejsPrefix string yarnCacheDir string logLevel string logDir string @@ -63,6 +64,7 @@ func Serve(efs *embed.FS) { flag.StringVar(&cdnDomain, "cdn-domain", "", "cdn domain") flag.StringVar(&cdnDomainChina, "cdn-domain-china", "", "cdn domain for china") flag.StringVar(&unpkgDomain, "unpkg-domain", "", "proxy domain for unpkg.com") + flag.StringVar(&nodejsPrefix, "nodejs-prefix", "", "nodejs installation dir (default: [etc-dir]/nodejs)") flag.StringVar(&etcDir, "etc-dir", "/usr/local/etc/esmd", "the etc dir to store data") flag.StringVar(&yarnCacheDir, "yarn-cache-dir", "", "the cache dir for `yarn add`") flag.StringVar(&logLevel, "log-level", "info", "log level") @@ -101,7 +103,10 @@ func Serve(efs *embed.FS) { } log.SetLevelByName(logLevel) - node, err = checkNode() + if nodejsPrefix == "" { + nodejsPrefix = path.Join(etcDir, "nodejs") + } + node, err = checkNode(nodejsPrefix) if err != nil { log.Fatalf("check nodejs env: %v", err) }