var my = require('my-package');
$my-package
npm init
[옵션] -y : 전부 디폴트 세팅으로 설정
@smkim/hi
entry point : 나의 패키지를 다른 사람이 부품으로 가져다 쓸 때, 어떤 파일의 내용을 진입 파일로 사용하는 가를 정하는 것
package.json 파일이 생기고, 입력한 내용이 json 데이터 포맷으로 저장된 것을 볼 수 있다.
main.js 파일 생성 및 작성
나의 패키지를 사용하는 소비자들이 쓸 수 있게 만들기 위해 export 한다.
publish
npm publish --access public
[옵션] --access : 누구나 볼 수 있게
private : 유료, 사설 저장소에 registry 구축
A. 로그인
에러 : error code No 4048....not permitted.... 어쩌고
npmjs.com
회원가입을 한다
npm login
@로그인이 이미 돼있나 헷갈릴 때는
npm whoami
B. 패키지명 중복
에러 : error code E403
publish 하려는 패키지의 name 을 이미 사용하고 있다
npm info [패키지명]
패키지에 대한 정보가 나온다면 누군가가 사용하고 있는 이름이고,
npm ERR! code E404 Registry returned 404 for GET on [주소] 에러가 발생한다면 사용해도 좋은 이름
a.이미 존재하는 경우
b.없는 경우(에러 발생)
C. proxy
프록시나 네트워크 문제라고 해서 찾아보니
*npm 설정 목록 보기
npm config list
설정 다시 원복....
npm config delete proxy
npm config delete https-proxy
D. (.npmrc) 파일 : npm config file
npm은 command line, 환경변수, npmrc 파일에서 설정값을 가져온다.
npm config 명령어가 결국, npmrc 파일을 수정하는 명령어인 것
E. 버전 문제
https://github.com/npm/npm/issues/21010
npm 깃헙 이슈 중에 npm 버전을 6.0 으로 업그레이드 하고 나서 403 에러를 해결한 사례
v5.6.0 -> v6.0.1
npm install npm@6.0 -g
F. @smkim 스코프 제거
npm 사용자 계정에 가입하거나 Org.를 만들면 사용자, Org. 이름과 일치하는 범위가 부여됨. 이 범위를 관련 패키지의 네임 스페이스로 사용할 수 있다.
스코프를 사용하면 충돌없이 다른 사용자나 Org.이 만든 패키지와 이름이 같은 패키지를 만들 수 있다.
@npm/package-name
@와 /사이가 스코프
username 이 아닌 스코프를 사용하고 싶다면 Org. 를 만들어야 함
(https://www.npmjs.com/org/create)
버전 변경 필수(같은 버전으로 publish 불가, 동일 버전일 경우 거절) -> npm publish
npm init -y
npm i test-test-test-hihi
node index.js
var greeting = require('./index');
// process.argv[2] : 인자
console.log('Greeting : ' + greeting[process.argv[2]]);
npm unpublish [<@scope>/]<pkg>[@<version>]
npm uninstall test-test-test-hihi
npx test-test-test-hihi
형식 : [Major].[Minor].[Patch]
ex)
버전을 직관적으로 3부분으로 표현하여, 라이브러리를 업데이트 할 경우, 참고하여 업데이트 여부 판단 가능
[minor]버전까지 설치 및 업데이트(호환되는 경우만)
npm i express@^1.1.1
위의 경우, 1.1.1 <= 버전 <2.0.0(1.x.x 로 표현 가능)
지정한 버전의 마지막 자리 내의 범위만 자동으로 업데이트
npm i express@~1.1.1
위의 경우, 1.1.1 <= 버전 < 1.2.0 까지 설치됨(1.1.x 로 표현 가능)
버전이 1.0.0 미만일 경우(pre-release), API 변경이 수시로 일어난다. 0.1과 0.2의 차이가 크기 때문에 캐럿이 틸드처럼 동작
npm i express@latest 또는 npm i express@x
참고자료
- https://opentutorials.org/module/4571
- https://www.daleseo.com/js-npm-publish/
- https://stackoverflow.com/questions/11773509/npm-behind-a-proxy-fails-with-status-403/11773612#11773612
- https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages
- https://docs.npmjs.com/about-scopes
- https://docs.npmjs.com/package-name-guidelines
- https://semver.org/lang/ko/#%EC%9A%94%EC%95%BD
- https://han41858.tistory.com/22
- https://blog.outsider.ne.kr/1041
- [도서] Node.js 교과서: 기본기에 충실한 노드제이에스 10 입문서
- [도서] Node.js