수색…


소개

노드 패키지 관리자 (npm)는 다음과 같은 두 가지 주요 기능을 제공합니다. search.nodejs.org에서 검색 할 수있는 node.js 패키지 / 모듈 용 온라인 리포지토리. 명령 줄 유틸리티는 Node.js 패키지를 설치하고 Node.js 패키지의 버전 관리 및 종속성 관리를 수행합니다.

통사론

매개 변수

매개 변수
접속하다 npm publish --access=public
큰 상자 npm bin -g
편집하다 npm edit connect
도움 npm help init
초기화 npm init
설치하다 npm install
링크 npm link
치다 npm prune
출판하다 npm publish ./
재시작 npm restart
스타트 npm start
중지 npm start
최신 정보 npm update
번역 npm version

패키지 설치

소개

패키지는 개발자가 프로젝트에 사용할 수있는 도구를 나타 내기 위해 npm에서 사용하는 용어입니다. 여기에는 jQuery 및 AngularJS와 같은 라이브러리 및 프레임 워크부터 Gulp.js와 같은 작업 주자에 이르기까지 모든 것이 포함됩니다. 패키지는 일반적으로 node_modules 라는 폴더에 있으며 package.json 파일도 포함됩니다. 이 파일에는 특정 패키지를 사용하는 데 필요한 추가 모듈 인 모든 종속성을 포함하여 모든 패키지에 관한 정보가 들어 있습니다.

Npm은 명령 줄을 사용하여 패키지를 설치하고 관리하므로 npm을 사용하려고하는 사용자는 운영 체제의 기본 명령 즉 디렉토리 탐색과 디렉토리 내용을 볼 수 있어야합니다.


NPM 설치

패키지를 설치하려면 NPM이 설치되어 있어야합니다.

NPM을 설치하는 권장 방법은 Node.js 다운로드 페이지 에서 설치 관리자 중 하나를 사용하는 것입니다. npm -v 또는 npm version 명령을 실행하여 node.js가 이미 설치되어 있는지 확인할 수 있습니다.

Node.js 설치 프로그램을 통해 NPM을 설치 한 후 업데이트가 있는지 확인하십시오. 이는 NPM이 Node.js 설치 프로그램보다 더 자주 업데이트되기 때문입니다. 업데이트를 확인하려면 다음 명령을 실행하십시오.

npm install npm@latest -g

패키지 설치 방법

하나 이상의 패키지를 설치하려면 다음을 사용하십시오.

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

참고 : 이렇게하면 명령 줄이 현재있는 디렉터리에 패키지가 설치되므로 적절한 디렉터리가 선택되었는지 확인하는 것이 중요합니다

현재 작업 디렉토리에 package.json 파일이 있고 종속성이 정의되어 있으면 npm install 은 파일에 나열된 모든 종속성을 자동으로 확인하고 설치합니다. npm install 명령의 약식 버전을 사용할 수도 있습니다. npm i

특정 버전의 패키지를 설치하려면 다음을 사용하십시오.

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

특정 버전 범위와 일치하는 버전을 설치하려면 다음을 사용하십시오.

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

최신 버전을 설치하려면 다음을 사용하십시오.

npm install <name>@latest

위의 명령은 npmjs.com 의 중앙 npm 저장소에있는 패키지를 검색합니다. npm 레지스트리에서 설치하지 않으려는 경우 다음과 같은 다른 옵션이 지원됩니다.

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

일반적으로 모듈은 현재 작업 디렉토리에서 찾을 수있는 node_modules 라는 폴더에 로컬로 설치됩니다. require() 가 모듈을로드하기 위해 사용할 디렉토리입니다.

package.json 파일을 이미 만든 경우 --save (속기 -S ) 옵션이나 변형 중 하나를 사용하여 설치된 패키지를 dependency로 package.json 에 자동으로 추가 할 수 있습니다. 다른 사람이 여러분의 패키지를 설치하면, npmpackage.json 파일의 의존성을 자동으로 읽고 열거 된 버전을 설치합니다. 나중에 파일을 편집하여 종속성을 추가 및 관리 할 수 ​​있으므로 일반적으로 종속성을 추적하는 것이 좋습니다. 예를 들면 다음과 같습니다.

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

패키지를 설치하고 응용 프로그램을 실행하는 데 필요한 패키지가 아닌 개발을 위해 필요한 경우에만 패키지를 저장하려면 다음 명령을 수행하십시오.

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

종속성 설치

일부 모듈은 사용할 라이브러리를 제공 할뿐만 아니라 명령 행을 통해 사용할 하나 이상의 바이너리도 제공합니다. 이러한 패키지를 로컬로 설치할 수도 있지만 명령 줄 도구를 사용하도록 전역으로 설치하는 것이 좋습니다. 이 경우 npm 은 바이너리를 적절한 경로 (예 : /usr/local/bin/<name> )에 자동으로 연결하여 명령 줄에서 사용할 수 있도록합니다. 전역으로 패키지를 설치하려면 다음을 사용하십시오.

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

현재 작업 공간에 설치된 모든 패키지 및 관련 버전의 목록을 보려면 다음을 사용하십시오.

npm list
npm list <name>

선택적 name 인수를 추가하면 특정 패키지의 버전을 확인할 수 있습니다.


참고 : npm 모듈을 전 세계적으로 설치하는 동안 권한 문제가 발생하면 sudo npm install -g ... 를 실행 sudo npm install -g ... 문제를 해결하십시오. 상승 된 권한으로 시스템에서 타사 스크립트를 실행할 수 있도록하는 것은 위험합니다. 권한 문제는 npm 자체가 설치된 방식에 문제가 있음을 의미 할 수 있습니다. 샌드 박스 사용자 환경에 노드를 설치하려면 nvm 을 사용해보십시오.

빌드 도구 또는 기타 개발 전용 종속성 (예 : Grunt)이있는 경우 배포하는 응용 프로그램과 번들로 묶을 필요가 없습니다. 그렇다면 devDependencies 아래의 package.json 에 나열된 개발 종속성을 갖고 싶어 할 것입니다. 개발 전용 종속물로 패키지를 설치하려면 --save-dev (또는 -D )를 사용하십시오.

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

그러면 패키지가 package.jsondevDependencies 에 추가됩니다.

다운로드 / 복제 된 node.js 프로젝트의 종속성을 설치하려면

npm install
# or
npm i

npm은 자동으로 package.json 에서 종속성을 읽고 설치합니다.

프록시 서버 뒤의 NPM

인터넷에 프록시 서버를 통해 액세스하는 경우 원격 저장소에 액세스하는 npm install 명령을 수정해야 할 수 있습니다. npm은 명령 줄을 통해 업데이트 할 수있는 구성 파일을 사용합니다.

npm config set

브라우저의 설정 패널에서 프록시 설정을 찾을 수 있습니다. 프록시 설정 (서버 URL, 포트, 사용자 이름 및 암호)을 얻은 후에는 다음과 같이 npm 구성을 구성해야합니다.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , port 필드는 선택 사항입니다. 일단 이것을 설정하면 npm install , npm i -g 등이 제대로 작동합니다.

범위 및 저장소

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

자신의 패키지 이름이 @myscope 시작하고 범위 "myscope"가 다른 저장소와 연결되어 있으면 npm publish 가 패키지를 해당 저장소에 업로드합니다.

다음 설정을 .npmrc 파일에 유지할 수도 있습니다.

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

이것은 CI 서버에서 빌드를 자동화 할 때 유용합니다 fe

패키지 제거

하나 이상의 로컬로 설치된 패키지를 제거하려면 다음을 사용하십시오.

npm uninstall <package name>

npm의 제거 명령에는 다음과 같은 다섯 가지 별칭이 있습니다.

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

패키지 제거시 package.json 파일에서 패키지를 제거하려면 --save 플래그 (약자 : -S )를 사용하십시오.

npm uninstall --save <package name>
npm uninstall -S <package name>

개발 종속성을 위해 --save-dev 플래그 (약식 : -D )를 사용하십시오.

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

선택적 종속성의 경우 --save-optional 플래그 (약식 : -O )를 사용하십시오.

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

전역 적으로 설치된 패키지의 경우 --global 플래그 (약식 : -g )를 사용하십시오.

npm uninstall -g <package name>

기본 시맨틱 버전 관리

패키지를 게시하기 전에 버전을 만들어야합니다. npm은 의미 론적 버전 관리를 지원합니다. 이것은 패치, 마이너 및 메이저 릴리스가 있음을 의미합니다.

예를 들어 버전을 변경하기 위해 패키지의 버전이 1.2.3 인 경우 다음을 수행해야합니다.

  1. 패치 릴리스 : npm version patch => 1.2.4
  2. 마이너 릴리스 : npm version minor => 1.3.0
  3. 주요 릴리즈 : npm version major => 2.0.0

다음을 사용하여 버전을 직접 지정할 수도 있습니다.

npm version 3.1.4 => 3.1.4

위의 npm 명령 중 하나를 사용하여 패키지 버전을 설정하면 npm은 package.json 파일의 버전 필드를 수정하고 커밋하며 "v"접두사가 붙은 새 Git 태그를 만듭니다 '명령을 내렸다.

git tag v3.1.4

Bower와 같은 다른 패키지 관리자와 달리 npm 레지스트리는 모든 버전에 대해 생성되는 Git 태그에 의존하지 않습니다. 그러나 태그 사용을 원한다면 패키지 버전을 부딪힌 후에 새로 생성 된 태그를 반드시 기억해야합니다.

git push origin master (package.json으로 변경 사항을 푸시)

git push origin v3.1.4 (새 태그를 푸시)

또는 다음과 같이하면됩니다.

git push origin master --tags

패키지 구성 설정

Node.js 패키지 구성은 각 프로젝트의 루트에서 찾을 수있는 package.json 파일에 포함되어 있습니다. 다음을 호출하여 새로운 구성 파일을 설정할 수 있습니다.

npm init

그러면 Git 저장소 정보 (존재하는 경우)와 환경 변수에 대한 현재 작업 디렉토리를 읽고 자동 저장하여 일부 자리 표시 자 값을 자동 완성합니다. 그렇지 않으면 기본 옵션에 대한 입력 대화 상자를 제공합니다.

기본값을 사용하여 package.json 을 만들려면 다음을 사용하십시오.

npm init --yes
# or
npm init -y 

npm 패키지로 게시하지 않을 프로젝트의 package.json 을 작성하는 경우 (예 : 종속성을 반올림하기위한 목적) package.json 파일에이 인 텐트를 전달할 수 있습니다.

  1. 실수로 게시되지 않도록 private 속성을 true로 설정합니다 (선택 사항).
  2. 선택적으로 license 속성을 "무제한"으로 설정하여 다른 사람들이 귀하의 패키지를 사용할 수있는 권리를 거부하십시오.

패키지를 설치하고 package.json 자동 저장하려면 다음을 사용하십시오.

npm install --save <package>

패키지 및 관련 메타 데이터 (예 : 패키지 버전)가 종속 항목에 나타납니다. 개발 의존성 ( --save-dev 사용)으로 저장하면 패키지가 devDependencies 대신 나타납니다.

이 베어 본 package.jsonpackage.json 을 사용하면 패키지를 설치 또는 업그레이드 할 때 설명과 저장소 필드가 누락되었다는 경고 메시지가 표시됩니다. 이 메시지를 무시하는 것은 안전하지만 텍스트 편집기에서 package.json을 열고 JSON 객체에 다음 행을 추가하여 제거 할 수 있습니다.

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

패키지 게시

먼저 패키지를 구성했는지 확인하십시오 ( 패키지 구성 설정 참조 ). 그런 다음 npmjs에 로그인해야합니다.

이미 npm 사용자가있는 경우

npm login

사용자가없는 경우

npm adduser

현재 클라이언트에 사용자가 등록되어 있는지 확인하려면

npm config ls

그 후, 패키지를 게시 할 준비가되면

npm publish

그리고 너 끝났어.

새 버전을 게시해야하는 경우 기본 의미 버전 관리에서 설명한 대로 패키지 버전을 업데이트해야합니다. 그렇지 않으면 npm 에서 패키지를 게시 할 수 없습니다.

{
    name: "package-name",
    version: "1.0.4"
}

스크립트 실행

package.json 스크립트를 정의 할 수 있습니다. 예를 들면 다음과 같습니다.

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

echo 스크립트를 실행하려면 명령 행에서 npm run echonpm run echo 하십시오. 위의 echo 와 같은 임의의 스크립트는 npm run <script name> 하여 실행해야합니다. 또한 npm에는 패키지의 특정 단계 (예 : preinstall )에서 실행되는 많은 공식 스크립트가 있습니다. npm이 스크립트 필드를 처리하는 방법에 대한 전체 개요는 여기 를 참고 하십시오 .

npm 스크립트는 서버 시작, 프로젝트 빌드 및 테스트 실행과 같은 작업에 가장 자주 사용됩니다. 다음은 좀 더 현실적인 예입니다.

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

scripts 항목에서 mocha 와 같은 명령 줄 프로그램은 전역 적으로 또는 로컬로 설치 될 때 작동합니다. 명령 줄 항목이 시스템 PATH에 없으면 npm은 로컬로 설치된 패키지도 확인합니다.

스크립트가 매우 길면 다음과 같이 부분으로 나눌 수 있습니다.

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

관련없는 패키지 제거

불필요한 패키지 (의존성 목록에 설치되지 않은 패키지)를 제거하려면 다음 명령을 실행하십시오.

npm prune

모든 dev 패키지를 제거하려면 --production 플래그를 추가하십시오.

npm prune --production

더 많은 정보

현재 설치된 패키지 나열

현재 설치된 패키지의 목록 (트리보기)을 생성하려면 다음을 사용하십시오.

npm list

ls , lalllist 명령의 별명입니다. la와 ll 명령은 설명과 저장소 같은 확장 된 정보를 보여줍니다.

옵션

응답 형식은 옵션을 전달하여 변경할 수 있습니다.

npm list --json
  • json - json 형식으로 정보를 표시합니다.
  • long - 확장 된 정보를 표시합니다.
  • parseable - 트리 대신 구문 분석 가능한 목록을 표시합니다.
  • global - 글로벌로 설치된 패키지를 보여줍니다.
  • depth - 의존성 트리의 최대 표시 깊이
  • dev / development - devDependencies를 보여줍니다.
  • prod / production - 종속성을 표시합니다.

원하는 경우 패키지의 홈 페이지로 이동할 수도 있습니다.

npm home <package name>

npm 및 패키지 업데이트

npm 자체는 Node.js 모듈이기 때문에 자체적으로 업데이트 할 수 있습니다.

OS가 Windows 인 경우 관리자 권한으로 명령 프롬프트를 실행해야합니다.

npm install -g npm@latest

업데이트 된 버전을 확인하려면 다음을 수행하십시오.

npm outdated

특정 패키지를 업데이트하려면 다음을 수행하십시오.

npm update <package name>

그러면 package.json의 제한 사항에 따라 패키지가 최신 버전으로 업데이트됩니다.

package.json에서 업데이트 된 버전을 잠 그려는 경우 다음을 수행하십시오.

npm update <package name> --save

모듈을 특정 버전에 고정시키기

기본적으로 npm은 각 의존성의 의미 론적 버전 에 따라 모듈의 최신 사용 가능한 버전을 설치합니다. 모듈 작성자가 semver를 따르지 않고 모듈 업데이트에 변경 사항을 적용하면 문제가 될 수 있습니다.

각 종속성의 버전 (및 종속성의 버전 등)을 node_modules 폴더에 로컬로 설치된 특정 버전으로 node_modules 을 사용하십시오.

npm shrinkwrap

그러면 특정 버전의 dependancies를 나열하는 package.json 과 함께 npm-shrinkwrap.json 생성됩니다.

전역으로 설치된 패키지 설정

npm install -g 를 사용하여 "전역 적으로"패키지를 설치할 수 있습니다. 이것은 일반적으로 실행할 경로에 추가 할 수있는 실행 파일을 설치하기 위해 수행됩니다. 예 :

npm install -g gulp-cli

경로를 업데이트하면 gulp 직접 호출 할 수 있습니다.

많은 OS에서 npm install -g 는 사용자가 /usr/bin 과 같이 쓸 수없는 디렉토리에 쓰기를 시도합니다. 당신은 사용하지 말아야합니다 sudo npm install 와 임의의 스크립트 실행 가능한 보안 위험이 있으므로이 경우 sudo 향후 설치를 더 어렵게 할 쓸 수 없습니다 당신의 가정에 디렉토리를 만들 수 있으며, 루트 사용자가.

npm 이 설정 파일 인 ~/.npmrc 를 통해 전역 모듈을 어디에 설치하는지 알려줄 수 있습니다. 이것은 npm prefix 볼 수있는 prefix 라고합니다.

prefix=~/.npm-global-modules

npm install -g 를 실행할 때마다 접두사가 사용됩니다. npm install --prefix ~/.npm-global-modules 를 사용하여 설치할 때 접두어를 설정할 수도 있습니다. 접두어가 구성과 같으면 -g 를 사용할 필요가 없습니다.

전역에 설치된 모듈을 사용하려면 경로에 있어야합니다.

export PATH=$PATH:~/.npm-global-modules/bin

실행할 때 이제 npm install -g gulp-cli 하면 사용할 수 있습니다 gulp .

참고 : npm install 때 ( -g 없이) 접두사는 package.json 이있는 디렉토리이거나 계층 구조에 디렉토리가없는 경우 현재 디렉토리가됩니다. 또한 실행 파일이있는 node_modules/.bin 디렉토리를 만듭니다. 프로젝트와 관련된 실행 파일을 사용하려면 npm install -g 를 사용할 필요가 없습니다. node_modules/.bin 있는 node_modules/.bin 사용할 수 있습니다.

보다 빠른 디버깅 및 개발을위한 프로젝트 링크

프로젝트 의존성을 구축하는 것은 때때로 지루한 작업이 될 수 있습니다. 패키지 버전을 NPM에 게시하고 종속성을 설치하여 변경 사항을 테스트하는 대신 npm link 사용 npm link . npm link 는 심볼릭 npm link 생성하므로 최신 코드를 로컬 환경에서 테스트 할 수 있습니다. 따라서 게시 된 버전을 만들기 전에 최신 코드를 실행하여 전역 도구 및 프로젝트 종속성을보다 쉽게 ​​테스트 할 수 있습니다.

도움말 텍스트

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

프로젝트 종속성을 연결하는 단계

종속성 링크를 만들 때 패키지 이름은 부모 프로젝트에서 참조 될 내용입니다.

  1. CD를 종속 디렉토리 (예 : cd ../my-dep )
  2. npm link
  3. 의존성을 사용할 프로젝트에 CD를 넣으십시오.
  4. npm link my-dep 또는 namespaced npm link @namespace/my-dep

전역 도구를 연결하는 단계

  1. CD를 프로젝트 디렉토리에 넣습니다 (예 : cd eslint-watch ).
  2. npm link
  3. 도구 사용
  4. esw --quiet

발생할 수있는 문제

종속성 또는 전역 도구가 이미 설치된 경우 프로젝트를 링크하면 문제가 발생할 수 있습니다. npm uninstall (-g) <pkg> 그런 다음 npm link 를 실행하면 정상적으로 발생할 수있는 문제가 해결됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow