ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2장 - 환경구성 ( Node.js 개발 Tool , 모듈 관리 Npm , Package.json )
    MeanStack (deprecated) 2016. 6. 6. 17:45





    1. MeanStack 개발 Tool 


    저번에 이어서 마지막으로 개발에 필요한 Tool 을 정해본다.

    Javascript 를 개발할 때 쓸 수 있는 Tool 은 너무너무너무 많다.  왠만한 Tool 은 다 된다고 본다.

    기본적인 윈도우 메모장 , NotePad++ , Eclipse , Visual Studio , WebStrom , Atom , SublimeText 등 너무너무

    많다. 


    위 언급한 개발 Tool 중 탑은 당연히 Visual Studio 가 단연 최고의 기능을 가지고 있으며, Javascript 뿐만 

    아니라 c , c++ , c# , node.js , angular 등 수많은 언어를 지원하고  ,엄청난 디버깅 기능과 편리기능이 모두

    집약 되어있다.  거기다 이번에 Visual Studio 2015 Community 버전이 무료로 풀렸기에 어찌 쓰지 않을 수 

    있겠는가 . 하지만 프로그램이 무겁다는 단점도 있다.  

    복합적인 언어를 다루고, TFS 와 같은 프로젝트 협업도구가 필요하지 않은 이상 굳이 지금 무거운 VS를 

    사용할 필요가 없다.  

    Eclipse 역시 두루두루 쓰이는 괜찮은 Tool 이지만 역시 무겁고, 그다지 추천은 하지 않는다.


    나머지 Notepad++ , WebStorm , Atom , SublimeText 중 한가지를 사용하는 것을 추천한다.

    아래 이미지들을 보고 마음에 드는 것을 고르자.


    (Notepad++ 의 디자인 아주 클래식하다.)



    (최근 아주아주 핫하다. 그 유명한 GitHub에서 만든 에디터이다.)




    (아주 많은 기능을 가지고 있는 WebStrom . 다만 유료이다.)




    (본인이 쓰고 있는 SublimeText )




    (도움 따윈 필요없다 ! 고 생각한다면 메모장을...)



    개인적으로 SublimeText 를 추천한다. 수많은 플러그인으로 유료 프로그램 못지 않게 다양한 기능이 있고, 

    포터블 버전으로 자신만의 셋팅을 만들어서 USB에 넣어서 어디든 간편하게 가지고 다닐 수 있다. 

    단지 SublimeText 같은 경우 한글지원이 미흡해 약간의 셋팅을 해줘야 하고, 하도 단축키가 많아서 익숙해

    지는데 시간이 걸린다. (이건 다른 프로그램도 비슷하니까..)


    셋팅에 관한 부분은 구글신에 SublimeText 셋팅을 검색해서 기본적인 셋팅을 하고 추가로 필요한 플러그인은

    다운받아서 사용하면 된다.





    2. node.js 의 모듈 관리 NPM , Package.json 



    * NPM 에 대하여 

    Node.js 는 수많은 외부 모듈이 존재한다. 

    나중에 사용 할 Mean Stack의 핵심인 express 역시 노드 외부 모듈 중 하나니다. 만약 자신이 개발 하던 도중 

    '어멋, 이렇게 하니 너무 편하잖아' 하는 코드가 있으면 모듈로 만들어 배포 할 수 도 있다. 

    (하지만 왠만한 모듈은 다 나와있다..)


    먼저 노드 모듈 관리를 위해 NPM 을 사용한다. 

    NPM은 노드 설치와 함께 설치되며 노드 모듈의 설치 , 업데이트 , 제거를 위한 가장 좋은 수단이다. 

    NPM은 외부모듈을 검색하고, 내려받고, 설치까지 한번에 해주며, 해당 모듈의 지역화, 전역화를 손 쉽게 

    관리할 수 있는 도구이다.      ( https://npmjs.org/ )  <-- NPM 공식 홈페이지


    NPM 에는 지역과 전역이라는 두가지 설치모드가 존재한다. 지역 설치는 해당 폴더에 Node_modules 라는 

    폴더가 생기며 이곳에 외부 모듈이 설치 되며 시스템 전체에 영향을 주지 않고, 해당 프로젝트에서 필요로 

    하는 특정 모듈만을 받아서 사용할 수 있다. 


    전역설치는 노드에서 전역으로 사용하기를 원하는 모듈을 설치 할 때 사용하게 되는데 대체적으로 Grunt 와 

    같은 명령행 도구를 전역으로 설치한다. 대부분 필요에 따라 패키지 저자가 패키지를 전역으로 설치하도록 

    지시할 것 이다. 이러한 지시가 없다면 왠만하면 지역모드로 설치를 하자. 

    전역 모드 같은 경우 유닉스 기반 시스템에서느 /usr/local/lib/node_modules 폴더에 설치되고 , 윈도우 기반

    시스템에서는 보통 c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules 폴더에 모듈을 

    설치한다. 

    그럼 실제로 모듈을 설치해보자. 


    먼저 cmd 창을열고 테스트할 폴더를 만들자. (ex C:\npmtest) 

    기본적인 사용법은 npm install (패키지명)  이다.  이번엔 Test 로 나중에 사용할 express 모듈을 설치해본다.

    명령어로 npm install express 라고 치고 실행을 하자. 



    위 그림과 같이 express 모듈이 설치가 될 것이다. 

    그리고 해당 폴더를 가보자 .




    지역모드로 설치 했기 때문에 해당 폴더에 node_modules 폴더가 생겼고 그 안에 express 가 설치 되었다. 

    만역 전역으로 설치하고 싶다면 -g 라는 옵션을 추가 하면 된다.  (ex :  npm install -g express)

    위 명령어들로 설치하면 해당 모듈의 최신 버전을 자동으로 설치한다. 

    만약 특정 버전을 설치할려면 npm install (패키지이름)@(패키지버전) 의 명령어를 사용한다.

    (ex npm install express@1.5x


    모듈을 제거하고 싶다면 npm uninstall (패키지이름) 의 명령어를 사용하고

    전역모듈을 삭제하고 싶다면 npm uninstall -g (패키지이름) 을 사용하면 된다. 


    마지막으로 모듈을 최신 버전으로 업데이트 하고 싶다면 npm update (패키지이름) 의 명령어를 사용하고

    전역으로 갱신하려면 역시 -g 옵션을 넣어서 npm update -g (패키지이름) 을 사용하면된다. 

    참고로 update 명령 시 만약 모듈이 존재하지 않는다면 자동으로 해당 모듈의 최신 버전을 다운로드 받아

    설치 할 것이다.


    * Package.json 을 이용한 의존성 관리 

    위에서 설명한 모듈 설치는 한 두개의 모듈을 설치 할때는 문제가 없지만, 프로젝트가 커질수록 점점 많은

    수의 모듈을 필요로 할 것이다. 이때는 어떻게 할 것인가. 일일이 하나씩 설치를 할 것인가 .

    나중을 위해서라도 이런 모듈들은 체계적으로 관리가 되어야 한다. 

    그러기 위해서 npm은 Package.json 이라는 구성파일을 자동으로 생성하며 이를 통해서 의존성을 관리한다.

    이 package.json 에는 모듈뿐만 아니라 , 버전 , 저자와 같은 속성을 포함해 App의 다양한 속성을 정의 할 수도

    있다. 



    package.json 은 기본적으로 Json 파일이며,npm 을이용한 모든 모듈에 정의되어 있고, 사용자가 직접 생성하여

    정의 할 수 도 있다. 

    실제로 Package.json 을 사용하여 모듈을 설치해보자. 

    Package.json 을 생성하는 방법은 수동으로 Package.json 을 직접 만들 수 도 있지만, npm의 기능 중 자동으로 

    Package.json 을 생성해주는 명령어가 있다. 

    cmd 창을 열어 아까 만들었던 Test 폴더로 가서 npm init 라고 적고 실행을 해보자. 



    다음과 같이 옵션을 적는 창들이 나오고 다적은 뒤 해당 폴더에 생성이 된다. 


    {
    "name" : "test",
    "version" : "1.0.0",
    "description" : "",
    "main" : "index.ejs",
    "dependencies" :  {
    "express" : "^4.13.4"
    },
    "devDependencies" : {},
    "scripts" : {
      "test" : "echo \ "Error : no test specified\" && exit 1"
    },
    "author" : "",
    "license" : "ISC"
    }
    


    실제로 생성된 파일이다. 

    이제 생성시 나오는 각 옵션에 대하여 알아보자 .


    {

    "name" : 해당 모듈의 이름을 정의한다.  (이름에 'node' 나 'js' 가 들어가면 안된다.) 

    "version" : 해당 모듈의 버전을 정의한다.

    "description" : 해당 모듈의 추가적인 설명을 정의한다.

    "main" : node에서 해당 package.json 을 탐색할 때 기준이 되는 파일 이름을 정한다.  기본적으로 index 로 

               설정이 되며, 생략이 가능한 부분이지만 추후 프로젝트가 복잡해진다면 이 항목을 정의 할 필요가 있다. 

    "scripts" : package.json 이 있는 폴더에서 추가로 실행 할 스크립트 명령어를 정의한다. 노드 명령이나 

                 쉘 스크립트  를 적어주면 된다.  

                 현재 기본적으로 test 가 정의 되어있는데 해당 package.json 이 있는 폴더에서 

                 npm run test 를 실행하면 Error: no test specified 라는 콘솔 메시지가 나타날 것 이다. 

    "author" : 해당 모듈의 제작자를 정의한다.

    "liecnse" : 해당 모듈의 라이센스를 정의한다.

    "dependencies" : 일반적으로 package.json 에 가장 많은 정보가 입력되는 곳 이며 여기서 모듈의 의존성을 

                           정의 한다. 현재 아까 설치한 express 가 지정 되어있고 해당 모듈이름과 버전을  키 : 값 의 

                           형식으로 정의 되어있다.  여기서 추가로 모듈을 설치하고자 한다면 패키지이름 : 값  의 

                           형식으로 적어주면 된다. 

    "devDependencies" : 해당 모듈의 실행에 필요한 또는 개발에 필요한 모듈의 의존성을 입력하는 곳 이다. 

    }


    이제 package.json 을 사용하여 모듈을 설치 해보자. 

    해당 package.json 파일이 있는 폴더에서 npm install 이라는 명령어를 적고 실행하면 package.json 의 

    dependencies 와 devDependencies 에 있는 모듈을 자동으로 탐색하고 설치 할 것 이다. 


    {
    "name" : "test",
    "version" : "1.0.0",
    "description" : "",
    "main" : "index.ejs",
    "dependencies" :  {
    "express" : "^4.13.4"
    },
    "devDependencies" : {
    "color" : "latest"
    },
    "scripts" : {
      "test" : "echo \ "Error : no test specified\" && exit 1"
    },
    "author" : "",
    "license" : "ISC"
    }
    
    


    본인은 Test 로 devDependencies 에 color 라는 console 로그에 색깔을 입히는 모듈을 정의 하였다.

    (latest 는 최신버전을 뜻 한다.)


     

    npm install 명령을 실행하니 devDependencies 에 정의된 color 모듈이 자동으로 설치되었다. express는 설치가

    되어있으니 당연히 재 설치를 하지 않는다. 


    마지막으로 특정 모듈을 설치하며 package.json 에 자동으로 입력을 시키는 명령어를 알아보자. 

    Test 로 forever 모듈을 설치해보자. forever 모듈은 node의 프로세스를 관리해주는 모듈이다. 

    cmd 창에서 npm install forever --save 라고 적고 실행을 해보자. 



    화면처럼 설치가 완료되고 package.json 파일을 살펴보면 


    {
    "name" : "test",
    "version" : "1.0.0",
    "description" : "",
    "main" : "index.ejs",
    "dependencies" :  {
    "express" : "^4.13.4" ,
    "forever" : "^0.15.2"
    },
    "devDependencies" : {
    "color" : "latest"
    },
    "scripts" : {
      "test" : "echo \ "Error : no test specified\" && exit 1"
    },
    "author" : "",
    "license" : "ISC"
    }
    
    


    dependencies 에 forever 모듈이 정의 된 것 을 볼 수 있다. 


    이정도면 Package.json 에 관한 기본적인 사용법과 설명은 되었다. 

    나머지 부분은 필요할 때 더 공부하고 설명하기로 하고 다음 번엔 진짜 정말로 본격적으로 node.js 를 만져보자 .


    Package.json 에 관한 더 자세한 것 을 알고 싶다면 https://docs.npmjs.com/files/package.json 을 참고하자.


    (끝)






    댓글