Avevi ragione a segnalare il bug a Microsoft, e hanno sbagliato a chiuderlo come wontfix.
Fino a quando non è stato impostato , ecco una soluzione alternativa. Incollare il seguente in un file di testo e salvarlo come 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);
(NB Per mantenere questa risposta concisa, il codice di cui sopra non ha alcun controllo degli errori o di altri parametri, in modo da utilizzare a proprio rischio o utilizzare this invece Inoltre, vedere this SO question per maggiori informazioni su anteponendo ai file)
rendere il file eseguibile con utilizzando un terminale per navigare directory del file e l'esecuzione di:..
$ chmod +x shebangify
una volta che avete cre un programma Typescript (ad es. chiamato myscript.ts
) che si desidera compilare e trasformare in uno script di shell (ad esempio, chiamato myscript
), farlo eseguendo una sequenza lungo queste linee nel vostro terminale:
$ tsc --out myscript myscript.ts ; ./shebangify myscript ; chmod +x myscript
Scrivere l'eseguibile in JS e solo richiedere() il proprio file TypeScript. – jgillich
non è una soluzione. Cosa succede se voglio elaborare gli argomenti della riga di comando in TypeScript? –
Gli shebang presumono che l'interprete di destinazione utilizzi '# come suo carattere di commento, in modo che lo shebang stesso venga ignorato. Hai la complicanza aggiunta che non c'è un interprete TypeScript; per prima cosa lo compili in JavaScript, quindi interpreti il risultato. – chepner