* 현재 따라배우기가 조금 어렵다는 이야기가 있어서 기본내용을 배우는 시리즈를 올려보려고 합니다. 첫 번째는 npm에 대한 FAQ입니다. 짧고도 재밌으니까 꼭 읽어보세요! *
npm은 노드 패키지 매니저 입니다. node 모듈들을 자동으로 설치해 주죠. 그런데 npm에 대해서는 그다지 많은 이야기가 없는 것 같습니다. 자료를 찾아보다가 npm FAQ가 재밌고도 학습에 도움이 되어서 함께 보실수 있도록 번역해 봅니다.
npm 공식사이트인 npmjs.org로 접속하거나 커맨드 라인에서 npm faq라고 타이핑하면 볼 수 있습니다. 전 npm 1.0 커맨드라인 버전을 기준으로 작업하였습니다. :)
npm faq - frequently asked question
질문이 아닌데요?
저도 아직 모르겠네요.
에러 출력을 읽으세요. 그리고 뭔 소린지 모르겠으면, 하라는 대로 하시고, 필요한 정보와 함께 버그로 올리세요.
npm help folders 라고 실행해보세요.
- npm root 명령어를 사용하면 모듈이 어디로 가는지 볼 수 있어요. npm bin 이라고 치면 실행파일들은 어디로 가는지 볼 수 있고요.
- 글로벌(Global)로 설치한 것들은 로컬(local)과 다른 곳에 있어요. 만약 뭔가 설치할때 -g 플래그를 주었으면 실행파일은 npm bin -g 에 해당하는 위치로 그리고 모듈들은 npm root -g 에 대항하는 위치로 가요.
글로벌 인스톨을 하세요. 인스톨 할때 -g 혹은 --global 태그를 명령어 뒤에 붙이면 되요.
로컬로 설치하세요.
npm link 를 살펴보세요. 맘에 들거에요.
안할래요. 전 0.x 버전대의 스타일 '모든걸 글로벌로!' 스타일을 원해요.
OK. 알았어요. 이렇게 해보세요.
echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc
추천 하고 싶진 않네요. 이런식으로 하면 많은게 잘 안될거에요. 깨진다고 불평하기 전에 npm help config와 npm help global을 확실히 읽고 이해해야 해요. 잘못했다는 생각이 들면, 다음처럼 해서 되돌리세요.
npm config delete global --local
많은 사람들의 믿음과는 달리 'npm'은 사실 "Node Package Manager"의 머리글자를 딴 약어가 아니에요. 재귀적인 "npm is not an acronym"에 대한 재귀적인 바크로니믹이에요. ninaa라고 이름지었으면 머리글자를 딴 약어가 맞겠지만, 그렇지 않으니까 약어가 아닌거죠.
"NPM"은 사실 머리글자를 딴 약어가 맞죠. (좀 더 정확하게 말하자면 capitonym이고요) National Association of Pastoral Musicians (국립 목회 음악가 협회)를 나타냅니다. http://npm.org/ 를 보면 좀 더 알 수 있습니다.
소프트웨어 쪽에선 "NPM"은 크리스 로덴이 만든 non-parametric mapping 유틸리티를 뜻합니다. http://www.cabiatl.com/mricro/npm/ 을 보세요.
열매를 맺게 만들어준 첫번째 씨앗은 "pm"이라고 이름붙은 bash 유틸리티였습니다. "pkgmakeinst"의 축약형 후손이었죠. bash 함수였는데 다양한 종류의 것들을 다양한 플랫폼에 설치하는데 쓰였고, 야후의 yinst 사용에 흔히 쓰였죠. 만약 npm이 무언가에 대한 약어였다면, node pm 혹은 new pm 이었을겁니다.
따라서, 진지하게 이야기하면, "npm"프로젝트는 앞서 말한 커맨드라인 유틸리티로부터 이름을 따온겁니다. 그리고 QUERTY 키보드 레이아웃을 사용하는 오른손잡이 프로그래머가 반찌 끼우는 손가락(약지, 중지)만으로 쉽게 타이핑할 수 있도록 정한겁니다. 커맨드 라인은 늘 그렇듯 당연 소문자구요.
npm ls
npm search
인자들은 grep (유닉스 명령어) 이에요. npm search jsdom 하면 jsdom 패키지를 보여줘요.
npm update npm -g
인자없이 npm update 만 실행하면 로컬 패키지들을 모두 업데이트 할 수 있어요. 글로벌 패키지들은 npm update -g 라고 하면되요.
만약 정상설치 안되면 다음처럼 실행해 보세요.
curl http://npmjs.org/install.sh | sh
'패키지'는 뭔가요?
패키지는
a) package.json 파일에 설명이 쓰여져 있는, 프로그램이 들어 있는 폴더
b) (a)를 포함하고 있는 gzipped tarball
c) (b)가 되는 url
d) (c)로 등록되어 퍼블리싱된 <이름>@<버전>
e) (d)를 지칭하는 <이름>@<태그>
f) (e)를 만족시키는 "latest" 태그가 붙은 <이름> (예. express@latest )
g) clone했을때 (a)가 되는 git url
패키지를 퍼블리싱 하지 않았을지라도, 단지 node 프로그램 작성을 원한다면 (a), 그리고 tarball로 팩킹한 후 다른 곳에서 쉽게 인스톨 하길 원할 경우(b) 여전히 많은 장점을 얻을 수 있어요.
Git url도 해당 경우가 될 수 있어요.
commit-ish 는 어떤 태그든, sha 든, 혹은 git 체크아웃을 용 인자가 되는 브랜치 등 뭐든 될 수 있죠. 기본값은 master 에요.
어떻게하면 npm과 함께 node를 인스톨 할 수 있을까요?
못해요. 다음중 하나를 시도해 보세요.
npm help developers 그리고 npm help json 살펴보세요
개발 폴더를 npm link 하길 가장 원할 것 같습니다. 그렇게 하는건 끝내주게 쉬워요.
사설 레지스트리를 만들려면, npm help registry를 살펴보세요.
의존성을 url 목록으로 만들수 있나요?
네. root 폴더에 package.json을 가진 단일폴더로 만들고, 그 폴더를 gzipped tarball 묶은 url 혹은 gir url이 될 수 있습니다. (위쪽 부분의 "패키지가 뭔가요?" 부분을 보세요)
npm help link를 보세요.
패키지 레지스트리 웹사이트. 대체 그게 뭐요?
npm help registry 를 보세요.
비보안 채널에 대한 경고는 어떻게 처리 하나요?
node 0.4.10 전까지는 큰 파일들을 HTTPS로 보내는데 문제가 있었습니다. 해당 버전의 node에서는 기본적으론 HTTP로 퍼블리싱한다는 뜻입니다.
패스워드를 까먹어서 퍼블리싱을 못해요. 어떻게 리셋하죠?
http://admin.npmjs.org/reset 을 보세요.
ECONNREFUSED가 많이 발생하는데요. 뭐가문제죠?
레지스트리가 다운 되었거나 node의 DNS가 찾지 못하는 거에요. Cygwin 단계별 문서의 단계들을 모두 따라하지 않았을 경우 많이 발생해요. 레지스트리가 다운되었는지 확인하려면, http://registry.npmjs.org/-/short 를 브라우저로 열어보세요. 어떤 이유로 인터넷 연결이 안되는 건지 알려줄거에요.
만약 레지스트리가 다운되었다면, 이메일로 알려주거나 이슈를 등록해서 알려주세요. 제가 때려서 말을 듣게 해 놓겠습니다.
npm은 누가 만드나요?
여기에 없는 질문이나 요청은 어디서 하죠?
메일링 리스트나 이슈로 등록해 주세요.
왜 npm은 절 미워할까요?
npm은 누굴 미워할만한 재주가 없어요. 모두를 사랑해요. 특히 당신을요.
'node.js (OctoberSkyJs)' 카테고리의 다른 글
node.js 아티클 번역 및 공동 작업 공간을 만들었습니다. :) (0) | 2011.11.28 |
---|---|
[node basic] npm: 글로벌 vs 로컬 설치 (Global vs Local installation) (0) | 2011.11.22 |
[메뉴얼] Jade - 템플릿 엔진 for Node.js (1) | 2011.11.14 |
[node.js 따라배우기 04] 템플릿, 파셜, 그리고 문서 생성과 수정 (0) | 2011.11.14 |
[Node.js 따라배우기] 온라인 스터디 중이신 분들께 알려드립니다. (0) | 2011.11.11 |