NPM initializer 기본 만들기


npm 만들기를 조사하던중 궁금한 사항이 생겼다. React 개발을 한번이라도 해본 개발자라면 잘 알고 있을 Facebook에서 제공하는 create-react-app 이라는 스타트킷(?)을 한번이라도 보았을 것이다. 그래서 이건 어떻게 만들어 졌을까? 라는 궁금증에 이에 대하여 조사 및 테스트를 진행해 보았다.


Creact React App은 어떻게 만들었을까?

npx create-react-app my-app or npm init react-app my-app
my-app
├── README.md
├── node_modules
├── package.json
├── .gitignore
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    └── serviceWorker.js
    └── setupTests.js

위처럼 명령어를 입력하면 위 그림과 같이 react 개발을 위한 기본적인 디렉티로/파일/구조 등을 자동으로 설치하여 개발자고 초기 설정 및 세팅을 하는 수고로움을 덜어주는 아주 좋은 개발자 스타터 킷 이라고 생각했다. 그래서 혹시나 우리도 프로젝트를 새로 세팅할 경우 기본적인 구조를 자동으로 설정해주면 편리하겠다는 생각에서 출발하였다.

검색을 하던중 아래와 같은 사이트에서 대략적인 힌트를 얻었다.

https://github.com/saostad/node-typescript-starter

이 친구도 아마도 나와 같은 생각으로 출발했던거 같기도 하고, 뭔가 단서가 될만한 내용이 있을거 같은 느낌으로 일단 여기서부터 출발 하기로 했다.

어떻게 저 명령어를 실행하면 일반적으로 모듈을 설치하는 npm -i 와 같이 module을 다운받아 설치하는 로직이 아닌 cli가 실행이될까? 그리고 이건 어떻게 할까?

그래서 일단 내용은 뭐가 뭔지 모르겠고(안되면 되게 하라!) 무식하게 일단 package.json부터 살펴본다. 아래의 내용에서 뭔가 단서가 될만한 내용을 찾던 중 아래와 같은 경험있는 개발자들에겐 흔한 단어인 bin 이라는 걸 발견했다. 나머지 내용들은 프로젝트를 진행하던중 많이 봐 왔던 내용이라 어떤 일을 수행하는지 대략 알기에 내가 모르는 내용이 있을까하고 찾아 들어갔다.


그래서 바로 해당 파일을 또 파들어~~~~ 간다. 일단 첫 몇줄부터 내가 원하던 내용이 대략 보이는거 같다. "create folder" 그래 폴더를 만들고 파일을 추가하고 뭐 이런거구나, 결론은 윈도우의 cmd 명령어 창에 프로그램으로 직접 코드를 짜줘야 하는거였구나(ㅠ,.ㅜ)라는 불길한 예감은 항상 적중했다...ㅠ,.ㅜ


위 그림에서 보는 바와 같이 파일이 실행되고 setup()라는 함수를 통해 폴더를 생성하고 파일을 복사하고 기타 npm 명령들을 실행하여 기본 설정을 하는 것 같다.


Creact React App과 같은 instalizer 만들기 실습

자 그래서 위에서 많은 힌트를 얻었으니 직접 만들어보자. "백문이 불여일견, 백견이 불여 일행" 이라고 필자의 철학이다...ㅎㅎㅎ

검색을 하던중 중요한 내용 한가지는 npm 패키지를 만들기 위한 과정에서 명명규칙 앞에 항상 create-라는 단어를 넣어 주어야 한다는 것을 알았다. 이건 규칙인듯 하다. 혹시 npm 만들기를 안해본 사람이거나 모르는 사람은 여기(https://nurioweb.blogspot.com/2021/10/npm.html)를 참고하시기 바랍니다.

패키지를 생성하고 초기화하고 등록하는 전 과정은 npm 만들기와 동일하다. 그래서 여기서는 간단히 npm 만들기와 틀린 부분을 위주로 설명하였다.

현재 디렉토리에서 npm 만들기를 하면 아래와 같이 기본적인 파일들이 만들어 진다. 여기서 package.json을 수정해야 한다.

"bin": "setup.js" 를 추가하고 setup.js 파일을 해당 위치에 생성하자. 그리고 setup.js을 열어 우리가 원하는 내용을 입력하면 된다.


위와 같이 테스트를 위해서
1. 콘솔 로그로 찍으면 명령창에 텍스트로 표시된다.
2. 디렉토를 생성하기 위해 root 디렉토리를 찾아 콘솔로 표시했다.
3. 사용자에게 입력 받은 디렉토리 명 또는 위에서 설정한 기본 디렉토리 명으로 디렉토리를 생성한다.

이렇게 코드를 작성하여 npm 레파지토리에 등록하고 정상적으로 등록이 완료되면 테스트를 임의 디렉토리로 이동하여 테스트 해보도록 한다.


npm init xxxxx-xx[본인패키지명 create 제외] new-project[생성폴더명]

위와 같이 명령어를 실행하면 우리가 작성한 내용으로 콘솔에 실행된다. 처음에 접근은 쉽지 않았으나 현재 내용을 정리해서보면 간단한 내용이다. 
  1. npm init로 초기화 및 생성(모듈명 앞엔 create- 필 작성)
  2. package.json에 "bin"="setup.js" 추가
  3. setup.js에 원하는 코드 추가(명령창에서 실행할 내용)
  4. npm 등록
  5. npm 사용


참고

댓글

이 블로그의 인기 게시물

[JAVA] 변수란? 변수타입?

[JAVA] 문자셋(Charset)

[JAVA] 문자열 비교[== vs equals()]의 차이