간단한 node package를 만들고 출시까지 진행하는 방법을 알아보겠습니다.
진행 순서는 다음과 같습니다.
1. 패키지 만들기
2. 로컬에서 해당 패키지 테스트
3. npm 사이트 회원가입
4. npm cli 이용해서 배포
5. npm으로 다운받고 테스트 해보기
1. 패키지 만들기
1-1 제일 처음에 폴더를 만들고 (이름을 조금 특이하게 지었습니다.)
mkdir npm_my_dist_test
npm init -y
npm init -y 를 하게 되면 package.json 파일이 생성됩니다.
잠시 package.json에 대해 살펴보고 가겠습니다.
package.json이란??
npm으로 출시를 진행하려면 package.json은 필수입니다.
다른 이들이 설치와 관리를 쉽게 하기 위해 추가할수 있습니다.
- 패키지가 의존하고 있는 패키지들을 알려주고
- semantic 버전 규칙을 사용하여 패키지의 버전을 알려줍니다.
- build를 재생산 가능하게 해주어 다른 개발자들과 쉽게 공유할수 있게 해줍니다.
package.json 살펴보기
- name과 version은 필수 입니다.
- keyword에 단어를 추가해주면 그것으로 검색이 가능합니다.
npm search {keyword}
- npm bin
bin에 추가해줌으로써 패키지의 실행 가능한 파일에 접근할 수 있습니다.
package.json의 bin에 아래와 같이 명령어와 로컬 파일의 이름을 추가해줍니다.
"bin": {
"npm_my_dist_test": "src/index.js" // 이름 : 실행파일 위치
},
이 패키지가 전역으로 설치가 되면 패키지들은 전역 bin들과 연결이 되고 이로인해 이름으로 실행하는것이 가능해 집니다.
* 주의사항
실행 파일에 #!/usr/bin/env node 을 꼭 추가해주어야 합니다.
'node환경에서 실행되는 것이다' 라고 명시해주는 것이고 없으면 실행이 되지 않습니다
#!/usr/bin/env node
console.log("byebye");
- main은 entry point를 지정해 주는 곳입니다.
해당 모듈을 가져왔을시 실행되는 부분 입니다.
main에 따로 값을 지정해주지 않으면 root folder의 index.js가 default로 지정됩니다.
패키지 폴더(npm_my_dist_test) 에서 src/index.js에 아래와 같이 입력해줍니다.
// src/index.js
console.log('hihi')
2. 로컬에서 만든 패키지 테스트
해당 모듈이 정상적으로 동작하는지 확인해 볼까요??
상위 폴더로 가서 테스트 할 폴더를 만들고 우리가 만든 모듈을 불러올겁니다.
저는 testfolder 폴더를 만들고 npm_my_dist_folder를 불러오겠습니다.
mkdir testfolder
touch index.js
// index.js
require('../npm_my_dist_test')
패키지가 불러와졌고 작성한대로 실행되는 모습을 확인할 수 있습니다.
3. npm 사이트 회원가입
이제 이 패키지를 npm에 등록하고 npm install npm_my_dist_test 까지 진행해보도록 하겠습니다.
제일 먼저 아래의 사이트에서 회원가입을 진행해 줍니다.
회원가입 후에 이메일 인증을 해야합니다. (추후에 npm 배포를 진행할 때 문제가 생길수 있습니다.)
4. npm cli이용해서 배포
이제부터는 npm cli를 이용해서 직접 만든 npm을 배포합니다.
cli 환경에서 로그인을 진행해줍니다. (npm 사이트에서 회원가입한 유저의 정보입니다.)
npm adduser 혹은 npm login
npm publish를 입력하면 성공 혹은 실패를 알려줍니다.
실패했을시에는 에러 메시지에서 친절히 알려주어 안내 문구를 따르시면 됩니다.
성공했을시에는 이메일이 발송되고 30초 정도 뒤에 npm 사이트와 업데이트 된 버전을 새로 받을 수 있습니다.
5. npm으로 다운받고 테스트 해보기
이제 배포한 npm을 프로젝트에서 사용해보도록 하겠습니다.
npm install npm_my_dist_test
{
"name": "testfolder",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"npm_my_dist_test": "^1.0.7"
}
}
dependencies에 우리가 배포한 앱이 추가된 것을 확인할 수 있습니다.
// index.js
require('npm_my_dist_test');
을 입력하고 node index.js를 실행하면 아래와 같이 실행됨을 확인할 수 있습니다!
코드 확인해볼수 있는 곳
https://github.com/woobottle/npm_test
출처 : https://docs.npmjs.com/cli/v8/configuring-npm/package-json#bin
'Node' 카테고리의 다른 글
npm link (0) | 2022.03.04 |
---|---|
nestjs 의존성 주입, 싱글턴 패턴 (0) | 2022.02.28 |
.npmignore (0) | 2022.02.07 |
algorithm-cli 생성기 (0) | 2022.02.07 |
console.log vs process.stdout.write (0) | 2022.01.26 |