通常在我刚放的 node 文件中
#!/usr/bin/env node
并使其可执行,以创建可从bash终端运行的文件.但是,如果我在Typescript文件中这样做,编译器会说"error TS1001:Unexpected character"#",并拒绝编译它.那么,如何用Typescript生成shell可执行 node 文件呢?
通常在我刚放的 node 文件中
#!/usr/bin/env node
并使其可执行,以创建可从bash终端运行的文件.但是,如果我在Typescript文件中这样做,编译器会说"error TS1001:Unexpected character"#",并拒绝编译它.那么,如何用Typescript生成shell可执行 node 文件呢?
你向微软报告这个漏洞是对的,而他们以wontfix关闭它是错的.
在修复之前,这里有一个解决方法.将以下内容粘贴到文本文件中,并将其另存为shebangify
:
#!/usr/bin/env node
var fs = require('fs');
var path = process.argv[2];
var data = "#!/usr/bin/env node\n\n";
data += fs.readFileSync(path);
fs.writeFileSync(path, data);
(注意:为了保持这个答案的简洁性,上面的代码没有任何错误判断或其他改进,所以请使用this代替,风险自负.此外,有关文件前置的更多信息,请参阅this SO question.)
使用终端导航到文件目录并执行以下操作,使文件可执行:
$ chmod +x shebangify
一旦您创建了一个Typescript程序(例如,名为myscript.ts
),希望将其编译并转换为shell脚本(例如,名为myscript
),请在终端中沿以下几行执行一个序列:
$ tsc --out myscript myscript.ts ; ./shebangify myscript ; chmod +x myscript