Search
▪️

Improved Development Workflow and Debugging

NPM

npm은 Node Package Manager이다.
Third Party Package를 추가할 때도 사용한다.
npm init이라는 Command로 프로젝트를 initialize하면서 package.json을 생성하고, Script를 설정한다.
Script 설정은 Command에 대한 Shortcut을 제공한다.
start라고 하는 Script가 수행할 Command를 지정하고 (ex) "start" : "node app.js"), npm start를 하면 해당 명령어를 수행하게 된다.
그렇다면 다른 Script 이름을 무작위로 정할 수 있는가? → start라고 하는 Script가 굉장히 특별했던 것이지, 아무 것이나 설정한다고 구동되지는 않는다. (ex) npm start-server는 동작하지 않는다.)
그렇다면 Custom으로 설정한 이름의 Script는 실행할 방법이 없는가? → npm run을 통해서 수행 가능하다. (ex) npm run start-server)
npm install을 살펴보기 위해 Third Party Package로 Nodemon을 예로 들어보자.
Third Party Dependencies는 npm Repository(Cloud Package Repository)에서 사용이 가능하다. 해당 Package들은 npm을 통해서 설치, 관리하게 된다.
이제까지는 npm start처럼 서버를 구동한 상태에서 코드를 수정하면, 서버를 Kill 했다가 다시 Start해줘야 했다. 하지만 'nodemon'이라는 Third Party Package를 통해 이를 해결할 수 있다. (Third Party Package들은 npmjs.com에서 확인할 수 있다.)
npm install을 통해서 Third Party Package를 설치할 때, 크게 두 부류로 나눌 수 있다.
1.
Development용 Third Party Package
npm install $name —save-dev
2.
Production용 Third Party Pacakge
npm install $name —save
이렇게 설치된 Package들은 node_modules라는 디렉토리에 생성된다. node_modules를 지웠을 때, 다시 npm install을 통해서 생성할 수 있다. 일단 Third Party Package를 사용하기 위해서는 node_modules가 필요하다.
** nodemon의 경우 Production의 Level에선 Dynamic하게 코드를 바꿀 일이 없기 때문에 Development이다.
** 물론 별도로 나누지 않아도 되지만 어떤 Package가 어떻게 사용 되고 있는지에 대해서 명확히 이해할 수 있다.
** —save / —save-dev와 달리 -g라는 옵션은 해당 프로젝트에 설치하는 것이 아닌, 내 Machine에 설치하여 Global하게 어떤 프로젝트에서도 이용할 수 있도록 하는 옵션이다.
** npm install을 단독으로 쓸 경우, package.json에 있는 모든 package들을 자동으로 설치하게 된다.
** package.json이 아닌 package.lock에는 Third Party Package에 대한 상세한 정보들이 기록되어 있다.

Global Features vs Core Modules vs Third Party Modules

1.
Global Features
Always available, you don't need to import them into the files where you want to use them
2.
Core Modules
Don't need to be installed (NO npm install is required) but you need to import them when you want to use features exposed by them
3.
Third Party Modules
Need to be installed (via npm install in the project folder) AND imported

Nodemon 사용하기

Third Party Package 설치로 Nodemon을 설치를 했더라도 터미널에서 직접적인 명령어 타이핑으로는 사용이 불가능하다. 이유는...프로젝트에서만 설치되었고, 아직 내 Machine에는 Global하게 설치되지 않았기 때문이다. 따라서 Global하게 터미널에서 Nodemon이라는 Command를 이용하고 싶으면 -g 옵션으로 설치하여 이용하면 되고, 그렇지 않다면 npm에 Script에 등록하여 Indirect하게 사용하면 된다.
npm의 Script중에 start에 대한 Script를 다음과 같이 변경한다.
"start" : "node app.js" → "start" : "nodemon app.js"
Command + Save를 통해서 작성한 코드를 저장하게 되면 수정된 코드로 자동으로 Run하게 된다.

Types of Errors

1.
Syntax Errors
Error Message Exists
Easy to Find
2.
Runtime Errors
Error Message Exists
More Hard to Find
3.
Logical Errors
No Error Message
Difficult to Find

Restarting the Debugger Automatically After Editing our App

1.
VS Code → Add Configuration → Node.js로 설정 파일을 생성한다.
2.
.vscode/launch.json에 몇 가지를 추가한다.
"restart" : true
"runtimeExecutable" : "nodemon"
"console" : "integratedTerminal"
** 만일 위와 같이 했는데 디버깅 수행이 안 된다면, nodemon이 Global하게 설치 되지 않은 경우이므로 npm install -g nodemon을 한다.
** 변경 사항이 있다면 nodemon이 서버를 restart하게 되고, 이 때 debugging이 restart 되게 되는 구조이다.
** 단, 위 작업을 수행하고 마쳤을 때, Debugging을 종료하는 것과 Node.js를 종료하는 것은 별도의 작업으로 수행되어 따로 종료해야 하는 것을 명심해야 한다. 이것이 console을 integratedTerminal을 써야하는 이유이다.
** Runtime에 동적으로 조사식을 바꿀 수 있다.