[node.js] 명령 줄에서 TypeScript 파일을 실행하는 방법은 무엇입니까?

이에 대한 답을 찾는 데 놀랍게도 어려움을 겪고 있습니다. 일반 Node.JS를 사용하면 node path/to/file.jsCoffeeScript coffee hello.coffee와 ES6 의 모든 js 파일을 실행할 수 있습니다 babel-node hello.js. Typescript와 동일한 작업을 수행하려면 어떻게합니까?

내 프로젝트에는 tsconfig.jsonWebpack / ts-loader에서 브라우저를위한 멋진 작은 번들을 만드는 데 사용되는 파일이 있습니다. 그러나 콘솔에서 빌드 단계를 실행해야 .ts프로젝트가 스키마를 생성하는 데 사용되는 일부 파일을 사용할 수 있지만 컴파일하지 않고 단일 Typescript 파일을 실행할 수없는 것 같습니다. 전체 프로젝트.



답변

Typescript로 동일한 작업을 수행하는 방법

tsc사용하여 시계 모드에서 계속 실행 하면 라이브 방식으로 파일을 tsc -w -p .생성 .js하므로 node foo.js평상시처럼 실행할 수 있습니다.

TS 노드

ts-node가 있습니다 : https://github.com/TypeStrong/ts-node 즉시 코드를 컴파일하고 노드를 통해 실행합니다.

npx ts-node src/foo.ts


답변

다음 단계가 있습니다

  1. 먼저 typescript를 설치해야합니다

    npm install -g typescript

하나의 파일 helloworld.ts를 만듭니다.

function hello(person){
 return "Hello, " + person;
}
let user = "Aamod Tiwari";
const result = hello(user);
console.log("Result",result)

3. 명령 프롬프트를 열고 다음 명령을 입력하십시오

tsc helloworld.ts

  1. 다시 명령을 실행

노드 helloworld.js

  1. 콘솔에 결과가 표시됩니다

답변

위의 @Aamod 답변에 추가하려면 하나의 명령 줄을 사용하여 코드를 컴파일하고 실행하려면 다음을 사용할 수 있습니다.

윈도우 :

tsc main.ts | node main.js

리눅스 / macOS :

tsc main.ts && node main.js


답변

아래 명령을 실행하고 필요한 패키지를 전체적으로 설치하십시오.

npm install -g ts-node
npm install -g typescript

다음 명령을 실행하여 타이프 스크립트 파일을 실행하십시오.

ts-node typescript-file.ts


답변

유용한 정보-여기에 최신 TypeScript / JavaScript 런타임 Deno가 있습니다.

Ryan Dahl 노드 작성자가 새로 시작할 수 있다면 다르게 행동 할 것입니다.


답변

간단한 bash 래퍼가 도움이 될 수 있다고 생각하십시오.

#!/bin/bash
npx tsc $1 && node ${1%%.ts}


답변

다른 답변은 모듈, 특히 최신 ES 모듈을 사용하는 TypeScript 스크립트를 실행하는 방법에 대해 설명하지 않습니다.

첫째는, TS-노드가 작동하지 않습니다 위해 우리가 해결합니다 그래서 월 2020 년 기준으로, 그 시나리오에서 tsc다음 node.

둘째, TypeScript는 여전히 .mjs파일을 출력 할 수 없습니다 . .js파일과 "type": "module"에 대해 해결하겠습니다 package.json.

셋째, 확장명 import을 지정하지 않고 깨끗한 줄 을 원합니다 .js( .ts파일 에서 혼동 될 수 있음 ).

import { Lib } from './Lib';

글쎄, 그건 사소한 일이 아닙니다. 플래그 를 사용하지 않는 한 노드 가져 오기에 확장자를 지정 해야합니다experimental-specifier-resolution=node . 이 경우 노드 는 라인 에서만 지정 Lib.js하거나 검색 Lib/index.js할 수 있습니다 ../Libimport

넷째, 여전히 걸림돌 이 있습니다. 패키지와 다른 main파일 이름을 사용 index.js하면 노드가 찾지 못합니다. .

Transpiling은 바닐라 노드를 실행하는 것보다 훨씬 더 지저분합니다.

다음은 ES 모듈 코드를 생성 하는 최신 TypeScript 프로젝트 구조의 샘플 저장소입니다 .