使用babel-cli
,您可以使用es2015语法轻松编写一些节点可执行文件。为此,您只需添加适当的shebang #!/usr/bin/env babel-node
。
例如,
#!/usr/bin/env babel-node
import fs from 'fs';
fs.readFileSync('./some-file.csv');
我想知道如何使用TypeScript做到这一点?
更新:尝试ts-node
- 即使对于像
const say = (word: string) => {
console.log(word);
}
say('hello');
它不能通过ts-node test.ts
或使用#!/usr/bin/env ts-node
;
在这两种情况下我都会
SyntaxError: Unexpected token :
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at Object.<anonymous> (/usr/local/lib/node_modules/ts-node/src/bin/ts-node.ts:110:12)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
更新使ts-node
工作。仅当文件具有.ts
扩展名时才有效。对于没有扩展名但有shebang的文件 - 它不起作用。为反映所需行为的项目创建了github issue。
答案 0 :(得分:4)
我相信您正在寻找ts-node。
#!/usr/bin/env ts-node
...rest of script
作者确认此用法在此处工作: https://github.com/TypeStrong/ts-node/issues/73
P.S。我称之为executable,而不是binary。
答案 1 :(得分:1)
只是要注意,自从@ValeriiVasin 尝试的方法和@Paarth 的答案中推荐的方法以来,事情已经发生了变化。
Support for shebangs 已在 ts-node v8.9.0 中正式添加。推荐的 shebang 字符串现在包含 -script
后缀:
#!/usr/bin/env ts-node-script
使用 fs.readFileSync("somefile.json")
的脚本对我有用。