Skip to content

Commit b383b49

Browse files
authoredMar 5, 2024··
feat(shebang): add support for env's split-string option (#195)
* feat(shebang): add support for env's split-string option This is useful for passing arguments to node * feat(shebang): support all `env` options * feat(shebang): improve regex performance
1 parent 4778ae8 commit b383b49

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed
 

‎lib/rules/shebang.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ const getNpmignore = require("../util/get-npmignore")
1313

1414
const NODE_SHEBANG = "#!/usr/bin/env node\n"
1515
const SHEBANG_PATTERN = /^(#!.+?)?(\r)?\n/u
16-
const NODE_SHEBANG_PATTERN = /#!\/usr\/bin\/env node(?: [^\r\n]+?)?\n/u
16+
const NODE_SHEBANG_PATTERN =
17+
/^#!\/usr\/bin\/env(?: -\S+)*(?: [^\s=-]+=\S+)* node(?: [^\r\n]+?)?\n/u
1718

1819
function simulateNodeResolutionAlgorithm(filePath, binField) {
1920
const possibilities = [filePath]

‎tests/lib/rules/shebang.js

+25
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,31 @@ ruleTester.run("shebang", rule, {
4141
filename: fixture("object-bin/bin/b.js"),
4242
code: "#!/usr/bin/env node\nhello();",
4343
},
44+
{
45+
name: "string-bin/bin/test.js",
46+
filename: fixture("string-bin/bin/test.js"),
47+
code: "#!/usr/bin/env -S node\nhello();",
48+
},
49+
{
50+
name: "string-bin/bin/test.js",
51+
filename: fixture("string-bin/bin/test.js"),
52+
code: "#!/usr/bin/env -S node --loader tsm\nhello();",
53+
},
54+
{
55+
name: "string-bin/bin/test.js",
56+
filename: fixture("string-bin/bin/test.js"),
57+
code: "#!/usr/bin/env --ignore-environment node\nhello();",
58+
},
59+
{
60+
name: "string-bin/bin/test.js",
61+
filename: fixture("string-bin/bin/test.js"),
62+
code: "#!/usr/bin/env -i -S node --loader tsm\nhello();",
63+
},
64+
{
65+
name: "string-bin/bin/test.js",
66+
filename: fixture("string-bin/bin/test.js"),
67+
code: "#!/usr/bin/env --block-signal=SIGINT -S FOO=bar node --loader tsm\nhello();",
68+
},
4469
{
4570
name: "object-bin/bin/c.js",
4671
filename: fixture("object-bin/bin/c.js"),

0 commit comments

Comments
 (0)
Please sign in to comment.