Tom*_*thy 16 bash command-line-interface node.js typescript
通常在我刚刚放入的节点文件中
#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)
在顶部并使其可执行以创建可以从bash终端运行的文件.但是,如果我在Typescript文件中这样做,编译器会说"错误TS1001:意外字符"#""并拒绝编译它.那么如何使用Typescript创建一个shell可执行节点文件呢?
sam*_*per 12
您向Mac报告该错误是正确的,将它关闭为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);
Run Code Online (Sandbox Code Playgroud)
(注意:为了使这个答案简洁明了,上面的代码没有任何错误检查或其他改进,因此请自担风险或使用此代码.另外,请参阅此SO问题以获取有关前置文件的更多信息.)
通过使用终端导航到文件的目录并执行以下命令使文件可执行:
$ chmod +x shebangify
Run Code Online (Sandbox Code Playgroud)
一旦你创建了一个myscript.ts
你想编译的Typescript程序(例如,被调用)并变成一个shell脚本(例如被调用myscript
),可以通过在终端中沿着这些行执行一个序列来实现:
$ tsc --out myscript myscript.ts ; ./shebangify myscript ; chmod +x myscript
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您全局安装了 TypeScript 和 ts-node:
npm install typescript ts-node -g
Run Code Online (Sandbox Code Playgroud)
您现在可以轻松地通过以下方式执行此操作:
#!/usr/bin/env ts-node
console.log('Hello world')
Run Code Online (Sandbox Code Playgroud)
有关示例,请参阅https://github.com/Microsoft/TypeScript/blob/master/bin/tsc.基本上有一个没有.js
扩展名的虚拟文件,只需要实际的.js
文件.
例如在文件名中tsc
:
#!/usr/bin/env node
require('./tsc.js')
Run Code Online (Sandbox Code Playgroud)
小智 5
我没有足够的声望点来发表评论,但我只是认为让每个人都知道我在 GitHub 上打开了一个新问题是件好事,因为 Typescript 开发人员正在使用它来跟踪这样的事情:https://github.com/Microsoft/TypeScript/issues/2749。
归档时间: |
|
查看次数: |
6895 次 |
最近记录: |