Skip to content

Commit d5e8998

Browse files
committed
Improve cjs lexer node app
1 parent b116964 commit d5e8998

File tree

2 files changed

+217
-80
lines changed

2 files changed

+217
-80
lines changed

server/cjs_lexer.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ import (
1010
"path"
1111
"strings"
1212
"time"
13+
14+
"github.com/evanw/esbuild/pkg/api"
1315
)
1416

17+
const cjsLexerPkg = "esm-cjs-lexer@0.10.0"
18+
1519
// allowlist for _invoke_ mode
1620
var requireModeAllowList = []string{
1721
"@babel/types",
@@ -39,14 +43,13 @@ var requireModeAllowList = []string{
3943
}
4044

4145
func initCJSLexerNodeApp() (err error) {
42-
wd := path.Join(cfg.WorkDir, "ns")
46+
wd := path.Join(cfg.WorkDir, "npm/"+cjsLexerPkg)
4347
err = ensureDir(wd)
4448
if err != nil {
4549
return err
4650
}
4751

48-
// install dependencies
49-
cmd := exec.Command("pnpm", "i", "enhanced-resolve@5.16.0", "esm-cjs-lexer@0.10.0")
52+
cmd := exec.Command("pnpm", "add", "--prefer-offline", cjsLexerPkg)
5053
cmd.Dir = wd
5154
var output []byte
5255
output, err = cmd.CombinedOutput()
@@ -55,12 +58,17 @@ func initCJSLexerNodeApp() (err error) {
5558
return
5659
}
5760

58-
// create cjs_lexer.js
5961
js, err := embedFS.ReadFile("server/embed/cjs_lexer.js")
6062
if err != nil {
61-
panic(err)
63+
return
64+
}
65+
66+
minJs, err := minify(string(js), api.ESNext, api.LoaderJS)
67+
if err != nil {
68+
return
6269
}
63-
err = os.WriteFile(path.Join(wd, "cjs_lexer.js"), js, 0644)
70+
71+
err = os.WriteFile(path.Join(wd, "cjs_lexer.js"), minJs, 0644)
6472
return
6573
}
6674

@@ -72,10 +80,10 @@ type cjsLexerResult struct {
7280
Stack string `json:"stack"`
7381
}
7482

75-
func cjsLexer(cwd string, specifier string, nodeEnv string) (ret cjsLexerResult, err error) {
83+
func cjsLexer(wd string, specifier string, nodeEnv string) (ret cjsLexerResult, err error) {
7684
start := time.Now()
7785
args := map[string]interface{}{
78-
"cwd": cwd,
86+
"wd": wd,
7987
"specifier": specifier,
8088
"nodeEnv": nodeEnv,
8189
}
@@ -94,8 +102,14 @@ func cjsLexer(cwd string, specifier string, nodeEnv string) (ret cjsLexerResult,
94102
var outBuf bytes.Buffer
95103
var errBuf bytes.Buffer
96104

97-
cmd := exec.CommandContext(ctx, "node", "--experimental-permission", "--allow-fs-read=*", "cjs_lexer.js")
98-
cmd.Dir = path.Join(cfg.WorkDir, "ns")
105+
cmd := exec.CommandContext(
106+
ctx,
107+
"node",
108+
"--experimental-permission",
109+
"--allow-fs-read="+cfg.WorkDir+"/npm/*",
110+
"cjs_lexer.js",
111+
)
112+
cmd.Dir = path.Join(cfg.WorkDir, "npm/"+cjsLexerPkg)
99113
cmd.Stdin = bytes.NewBuffer(mustEncodeJSON(args))
100114
cmd.Stdout = &outBuf
101115
cmd.Stderr = &errBuf

0 commit comments

Comments
 (0)