2017-06-18 59 views
3

看起来好像TypeScript正在传输不可执行的目标文件。TypeScripts传输不可执行的文件

我必须在运行后运行chmod u+x <file>以使文件变为可执行文件。

这样的话,即使他们有一个hashbang:

#!/usr/bin/env node 

我怎么能告诉打字稿/ TSC创建作为可执行文件?

+0

我也喜欢配置打字稿,以使生成的.js文件不可写也默认.... –

+0

嗨,@亚历山大米尔斯。你可以提供你的动机使用打字稿编译器更改文件的权利? – galkin

回答

3

更改文件的权限不是打字稿的责任。

解决方案1. 在package.json的构建过程中使用单独的步骤。例如:

{ 
    "name": "temp", 
    "version": "1.0.0", 
    "scripts": { 
    "build": "tsc && chmod +x build/index.js" 
    }, 
    "dependencies": { 
    "typescript": "^2.3.4" 
    } 
} 

解决方案2.

TypeScript Language Service Plugin。我认为,在你的情况下,这是过度工程。

+0

呵呵? tsc从字面上将文件写出,.ts - > .js + .d.ts。它可以选择使用什么权限来写入文件。这个构建步骤应该是不必要的。 –

+0

@AlexanderMills在构建期间修改权限有点不负责任,如果他们试图在默认情况下保证安全。你可以争辩说,他们可以默认做他们现在做的事情,并为此提供一个选项,但是他们将不得不处理该代码中存在错误的可能性。风险大于好处,尤其是当打字稿专注于一个非常具体的问题时,团队自由地忽略了编辑器通常负责的其他特征请求。 – Catalyst

+0

嗯,我真的需要TS来创建可执行但不可写的.js文件。我不确定为什么TS不允许我们配置它。 –