매번 ts 파일을 변환하지 않고 TypeScript 및 Angular 응용 프로그램으로 dev 서버를 실행하려고합니다. 나는 달리기를 할 수 ts-node
있지만 .ts
gulp watch와 같은 방식으로 파일 을보고 앱 / 서버를 다시로드하고 싶습니다.
매번 ts 파일을 변환하지 않고 TypeScript 및 Angular 응용 프로그램으로 dev 서버를 실행하려고합니다. 나는 달리기를 할 수 ts-node
있지만 .ts
gulp watch와 같은 방식으로 파일 을보고 앱 / 서버를 다시로드하고 싶습니다.
답변:
nodemon
의 API로 사용자 정의 명령을 실행하기 위해 기본 동작을 변경할 수 있음을 알 때까지 개발 환경에서 똑같은 문제로 고심하고있었습니다 . 예를 들면 다음과 같습니다.
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
또는 더 나은 방법 : nodemon의 구성을 nodemon.json
다음 내용 이 포함 된 파일로 외부화 한 다음 nodemon
Sandokan이 제안한대로 실행하십시오 .
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
이를 ts-node
통해 기본 구현에 대해 걱정할 필요없이 프로세스 를 실시간으로 다시로드 할 수 있습니다 .
건배!
최신 버전의 nodemon을 위해 업데이트되었습니다.
nodemon.json
다음 내용 으로 파일을 작성하십시오 .
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./app-server.ts" }
및 단지 형nodemon
./
폴더 이름 앞에 추가하는 실수를 저질렀 습니다. 이것은 나를 위해 일했다 : { "verbose": true, "watch": ["server/**/*.ts"], "ext": "ts js json", "ignore": ["server/**/*.spec.ts"], "exec": "ts-node index.ts" }
. 그리고 명령 줄 :nodemon --watch server/**/*.ts --ignore server/**/*.spec.ts --verbose --exec ts-node index.ts
ext
config 파일에서도 설정을 변경해야하므로 ts 변경 사항을 찾아야 한다고 언급하고 싶습니다 . 내 설정 파일은 다음과 같습니다 :{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "ext": "ts js json", "_exec": "node dist/startup.js", "exec": "ts-node src/startup.ts" }
나는 덤프 한 nodemon
하고 ts-node
, 더 나은 대안에 찬성ts-node-dev
https://github.com/whitecolor/ts-node-dev
그냥 뛰어 ts-node-dev src/index.ts
tsc --watch
.
nodemon
와 ts-node
. 감사합니다!
"start": "ts-node-dev src"
. babel, nodemon 또는 이와 함께 제공되는 구성이 필요하지 않습니다. 모든 것이 당신을 위해 처리됩니다.
다음은 npm 스크립트를 사용하여 HeberLZ의 답변에 대한 대안 입니다.
내 package.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e
flag는 찾을 확장을 설정합니다.-w
감시 디렉토리를 설정하고-x
스크립트를 실행합니다.--inspect
에 watch:serve
스크립트가 실제로는 Node.js를 플래그, 그것은 단지 프로토콜을 디버깅 할 수 있습니다.
ts-node --inspect -- src/index.ts
때문에 지금 이 .
-e ts -w ./src
나를 위해 속임수-이것은 loopback4 CLI 생성 프로젝트와 함께 작동
이 문제를 위해 특별히 tsc-watch
라이브러리를 만들었습니다 . npm에서 찾을 수 있습니다 .
명백한 유스 케이스는 다음과 같습니다.
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
"[...] similar to nodemon but for TypeCcript."
:)
이것은 나를 위해 작동합니다 :
nodemon src/index.ts
이 풀 요청 이후 분명히 감사합니다 : https://github.com/remy/nodemon/pull/1552
ts-node
설치 하지 않았습니다 .
node_modules/
않습니까? 내가 없으면 그것이 실패합니다.
ts-node
설치 해야 합니다. 이 명령을 실행하지 않고 실행 ts-node
하면 failed to start process, "ts-node" exec not found
오류가 발생합니다. 의 남은 유물로 이걸 보았을 것입니다 node_modules
. 즉,이 솔루션은 추가 구성이 필요하지 않기 때문에 훨씬 좋습니다.
당신은 ts-node-dev를 사용할 수 있습니다
필요한 파일이 변경되면 (표준 node-dev로) 대상 노드 프로세스를 다시 시작하지만 재시작간에 Typescript 컴파일 프로세스를 공유합니다.
설치
yarn add ts-node-dev --dev
그리고 package.json은 다음과 같을 수 있습니다
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "tsc && node ./build/index.js"
}
나는 ~했다
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
그리고 실 시작. 'ts-node'와는 다른 ts-node
ts-node를 사용하지 않고 항상 dist 폴더에서 실행하는 것을 선호합니다.
그렇게하려면 기본 설정으로 package.json을 설정하십시오.
....
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"prestart": "npm run build",
"start": "node .",
"dev": "nodemon"
},
....
그런 다음 nodemon.json 구성 파일 을 추가 하십시오.
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "npm restart"
}
여기에 "exec"를 사용합니다 : "npm restart"
하므로 모든 ts 파일이 js 파일로 다시 컴파일 된 다음 서버를 다시 시작합니다.
개발 환경에서 실행하려면
npm run dev
이 설정을 사용하면 항상 분산 파일에서 실행되며 ts-node가 필요하지 않습니다.
이것을 package.json 파일에 추가하십시오
scripts {
"dev": "nodemon --watch '**/*.ts' --exec 'ts-node' index.ts"
}
이 작업을 수행하려면 ts-node를 dev-dependency로 설치해야합니다
yarn add ts-node -D
yarn dev
dev 서버를 시작하기 위해 실행
index.ts
Express 인스턴스이며, 어떻게하면 다시 시작 죽일 수