Search
▪️

Node.js as a Build Tool & Using npm

npm & Node.js

npm & Node.js → Two for the Price of One
Node.js → Execute Code, Interact with Files
npm →Manage Packages, Run Scripts
npm을 통해서 모든 Node Dependencies를 직접 공유하지 않고도 Re-Installing하여 편하게 프로젝트의 Dependencies를 충족시킬 수 있다. 이런 내용들은 package.json에 존재하여, package.json 만으로 프로젝트의 관리를 용이하게 할 수 있었다.

Using npm

npm은 Node Package Manager이며, CLI이다.
npm과 같은 package들 혹은 tool들, 그리고 모든 프로그래밍 언어에 두루 비슷한 개념으로 존재하는 Isolated Functionality에 대해서 살펴보자.
작성한 Code 중에 다른 곳에도 유용하게 사용할 수 있는 Code인 Isolated Functionality가 있다고 하자. (예를 들면, 웹이든 아니든 다양하게 사용할 수 있는 Random Number를 생성하는 기능이 있다고 하자.) 이런 Code들은 프로젝트의 Business 로직이 아니기 때문에 Public에 공유할 수도 있다. 이 때, npm의 도움을 받아 Isolated Functionality들은 Package로 만들 수 있고, npm Repository로 Cloud Service에 만들 수 있다.
이렇게 Cloud Service에 배포된 npm Repository들은 npm install이라는 명령어를 통해서 다른 Node 프로젝트에도 사용될 수 있다.
npmjs.com에서 배포된 오픈 소스들을 볼 수 있다. Package의 Functions ,Usages, Versions, examples, dependencies 등 세세하게 확인할 수 있다.

What is a Build Tool?

Node can execute any .js File!
Node.js
→ Read & Write Files (Parse or Read File, Manipulate Content, Output New File)
→ Spin up a Web Server
위 두가지 역할 이외에도 Node.js는 Build Tooling, Build Workflows를 가능하게 한다. 일반적으로 Build Tooling이나 Build Workflows들이라 함은 React Application과 같이 Frontend에서 다루는 주제이고 굉장히 중요하다.
예를 들어서, React Application 같은 경우는 Node Application이 아님에도 package.json을 갖고 있고 이는 곧 npm에 의해서 관리되는 것임을 알 수 있다. npm install을 통해서 dependencies를 설치하고, Package에 존재하는 Script를 구동하게 되면, Node.js를 통해서 JavaScript File들이 실행되는 것이다. 즉, npm에 의해서 관리되고 있는React Application의 Dependencies와 Script들을 Intalling하고 나서, Build에 사용되는 Script를 npm으로 구동하게 되면, 해당 Script를 통해서 Node.js가 관련 File들을 구동함으로써 React Application이 Build되는 것이다. Build를 통해서 JavaScript Code를 다른 Application에서 쓰이는 언어로 Transforming 하여 사용할 수 있고, Frontend에서는 이렇게 Build Tool을 사용함으로써 갖는 이점이 굉장히 크다.
이렇게 Build된 Application들은 대체적으로 Minified되고 Optimized 되어 사용된다. 이것이 Build Tool을 이용하는 이유이다. Unoptimized but Manageable 하게 작성한 Code들을 Build Tool을 이용하여 Optimized 된 Code로 바꾸어 최대한 작은 프로젝트로 사용자들이 이용할 때 빠르고 간편하게 이용할 수 있도록 하는 것이다.
Frontend에서의 Build는 아래 명령어를 통해 가능하다. 이렇게 Build된 Code들은 기존의 Code들을 Minified, Optimized, Condensed된 상태로 갖고 있다.
npm run build
이와 같이 Node.js는 모든 JavaScript File들을 실행할 수 있기 때문에, 단순히 Server를 구동하는 것 이외에도, npm에 의해서 관리되고 있는 다른 Application의 Build Tool을 구동하는 용도로도 사용된다.
한 마디로, npm에서 관리되고 있는 Application이 갖고 있는 Build Tool은 JavaScript File이기 때문에 Node.js가 구동할 수 있고, Build Tool을 구동함으로써 Minfied, Optimized, Condensed한 Code를 얻을 수 있는 것이다.