NPM 사용 소개

Sep 23, 2019 pm 12:08 PM
npm

NPM은 NodeJS와 함께 설치되는 패키지 관리 도구로 NodeJS 코드 배포의 많은 문제를 해결할 수 있습니다. 일반적인 사용 시나리오는 다음과 같습니다.

  • 사용자가 NPM 서버에서 로컬용으로 작성한 타사 패키지를 다운로드할 수 있습니다. 사용. .

  • 사용자가 로컬 사용을 위해 NPM 서버에서 다른 사람이 작성한 명령줄 프로그램을 다운로드하고 설치할 수 있습니다.

  • 사용자가 다른 사람이 사용할 수 있도록 NPM 서버에 작성한 패키지나 명령줄 프로그램을 업로드할 수 있습니다.

새 버전의 nodejs에 npm이 통합되었으므로 이전 npm도 설치되었습니다. "npm -v"를 입력하여 설치 성공 여부를 테스트할 수도 있습니다. 명령은 다음과 같습니다. 버전 프롬프트가 나타나면 설치가 성공한 것입니다.

$ npm -v
2.3.0
로그인 후 복사

이전 버전의 npm을 설치하는 경우 npm 명령을 통해 쉽게 업그레이드할 수 있습니다.

$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.14.2 /usr/local/lib/node_modules/npm
로그인 후 복사

Windows 시스템이므로 다음 명령을 사용하십시오.

npm install npm -g
로그인 후 복사

Taobao 미러를 사용하는 명령:

npm install -g cnpm --registry=https://registry.npm.taobao.org
로그인 후 복사

npm 명령을 사용하여 모듈 설치

npm install Node.js 모듈 구문 형식은 다음과 같습니다.

$ npm install <Module Name>
로그인 후 복사

다음 예에서는 npm 명령을 사용하여 일반적으로 사용되는 Node.js 웹 프레임워크 모듈 express를 설치합니다.

$ npm install express
로그인 후 복사

설치 후 express 패키지는 프로젝트 디렉터리 아래의 node_modules 디렉터리에 있으므로 필수 항목만 필요합니다. ('express')를 타사 패키지 경로를 지정하지 않고 코드에 추가합니다.

var express = require(&#39;express&#39;);
로그인 후 복사

글로벌 설치와 로컬 설치

npm 패키지 설치는 로컬 설치(로컬)와 글로벌 설치(글로벌) 두 가지로 나뉘는데, 명령줄에서 판단하면 -가 있는지 여부만 다릅니다. g, 예를 들어

npm install express          # 本地安装
npm install express -g   # 全局安装
로그인 후 복사

다음 오류가 발생하는 경우:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
로그인 후 복사

해결 방법은 다음과 같습니다.

$ npm config set proxy null
로그인 후 복사

로컬 설치

  • 1. 설치 패키지를 ./node_modules(npm 명령을 실행하는 디렉터리) 아래에 놓습니다. ), node_modules 디렉터리가 없으면 현재 npm 명령이 실행되는 디렉터리에 node_modules 디렉터리가 생성됩니다.

  • 2. 로컬에 설치된 패키지는 require()를 통해 도입할 수 있습니다.

전역 설치

  • 1. 설치 패키지를 /usr/local 또는 노드 설치 디렉터리에 넣습니다.

  • 2. 명령줄에서 직접 사용할 수 있습니다.

두 가지 기능을 모두 갖고 싶다면 두 곳에 설치하거나 npm 링크를 사용해야 합니다.

다음으로 전역 방법을 사용하여 express

$ npm install express -g
로그인 후 복사

를 설치합니다. 설치 프로세스는 다음 내용을 출력합니다. 첫 번째 줄은 모듈의 버전 번호와 설치 위치를 출력합니다.

express@4.13.3 node_modules/express
├── escape-html@1.0.2
├── range-parser@1.0.2
├── merge-descriptors@1.0.0
├── array-flatten@1.1.1
├── cookie@0.1.3
├── utils-merge@1.0.0
├── parseurl@1.3.0
├── cookie-signature@1.0.6
├── methods@1.1.1
├── fresh@0.3.0
├── vary@1.0.1
├── path-to-regexp@0.1.7
├── content-type@1.0.1
├── etag@1.7.0
├── serve-static@1.10.0
├── content-disposition@0.5.0
├── depd@1.0.1
├── qs@4.0.0
├── finalhandler@0.4.0 (unpipe@1.0.0)
├── on-finished@2.3.0 (ee-first@1.1.1)
├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
├── debug@2.2.0 (ms@0.7.1)
├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
로그인 후 복사

설치 정보 보기

다음 명령을 사용하면 전역적으로 설치된 모든 모듈을 볼 수 있습니다.

$ npm list -g
├─┬ cnpm@4.3.2
│ ├── auto-correct@1.0.0
│ ├── bagpipe@0.3.5
│ ├── colors@1.1.2
│ ├─┬ commander@2.9.0
│ │ └── graceful-readlink@1.0.1
│ ├─┬ cross-spawn@0.2.9
│ │ └── lru-cache@2.7.3
……
로그인 후 복사

모듈의 버전 번호를 보려면 다음 명령을 사용할 수 있습니다.

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
로그인 후 복사

Use package.json

package.json은 모듈의 디렉터리에 있으며 패키지의 속성을 정의하는 데 사용됩니다. 다음으로 node_modules/express/package.json에 있는 express 패키지의 package.json 파일을 살펴보겠습니다. 콘텐츠:

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.13.3",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    },
    {
      "name": "Jonathan Ong",
      "email": "me@jongleberry.com"
    },
    {
      "name": "Roman Shtylman",
      "email": "shtylman+expressjs@gmail.com"
    },
    {
      "name": "Young Jae Sim",
      "email": "hanul@hanul.me"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/strongloop/express.git"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.12",
    "array-flatten": "1.1.1",
    "content-disposition": "0.5.0",
    "content-type": "~1.0.1",
    "cookie": "0.1.3",
    "cookie-signature": "1.0.6",
    "debug": "~2.2.0",
    "depd": "~1.0.1",
    "escape-html": "1.0.2",
    "etag": "~1.7.0",
    "finalhandler": "0.4.0",
    "fresh": "0.3.0",
    "merge-descriptors": "1.0.0",
    "methods": "~1.1.1",
    "on-finished": "~2.3.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~1.0.8",
    "qs": "4.0.0",
    "range-parser": "~1.0.2",
    "send": "0.13.0",
    "serve-static": "~1.10.0",
    "type-is": "~1.6.6",
    "utils-merge": "1.0.0",
    "vary": "~1.0.1"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.3.3",
    "istanbul": "0.3.17",
    "marked": "0.3.5",
    "mocha": "2.2.5",
    "should": "7.0.2",
    "supertest": "1.0.1",
    "body-parser": "~1.13.3",
    "connect-redis": "~2.4.1",
    "cookie-parser": "~1.3.5",
    "cookie-session": "~1.2.0",
    "express-session": "~1.11.3",
    "jade": "~1.11.0",
    "method-override": "~2.3.5",
    "morgan": "~1.6.1",
    "multiparty": "~4.1.2",
    "vhost": "~3.0.1"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "express@4.13.3",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "doug@somethingdoug.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "dougwilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "rfeng",
      "email": "enjoyjava@gmail.com"
    },
    {
      "name": "aredridel",
      "email": "aredridel@dinhe.net"
    },
    {
      "name": "strongloop",
      "email": "callback@strongloop.com"
    },
    {
      "name": "defunctzombie",
      "email": "shtylman@gmail.com"
    }
  ],
  "dist": {
    "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
    "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
  "readme": "ERROR: No README data found!"
}
로그인 후 복사

Package.json 속성 설명

  • name - 패키지 이름.

  • version - 패키지의 버전 번호입니다.

  • description - 패키지에 대한 설명입니다.

  • 홈페이지 - 패키지의 공식 웹사이트 URL입니다.

  • author - 패키지 작성자의 이름입니다.

  • contributors - 패키지에 대한 다른 기여자의 이름입니다.

  • dependent - 종속 패키지 목록입니다. 종속 패키지가 설치되지 않은 경우 npm은 node_module 디렉터리에 종속 패키지를 자동으로 설치합니다.

  • repository - 패키지 코드가 저장되는 장소 유형으로 git 또는 svn일 수 있으며 git은 Github에 있을 수 있습니다.

  • main - 기본 필드는 프로그램의 기본 항목 파일을 지정하며 require('moduleName')은 이 파일을 로드합니다. 이 필드의 기본값은 모듈 루트 디렉터리 아래의 index.js입니다.

  • keywords - 키워드


모듈 제거

다음 명령을 사용하여 Node.js 모듈을 제거할 수 있습니다.

$ npm uninstall express
로그인 후 복사

제거한 후 /node_modules/ 디렉토리로 이동하여 패키지가 아직 존재하는지 확인하거나 다음 명령을 사용하여 확인할 수 있습니다.

$ npm ls
로그인 후 복사

Update module

다음 명령을 사용할 수 있습니다. 모듈을 업데이트하려면:

$ npm update express
로그인 후 복사

모듈 검색

다음을 사용하여 모듈을 검색하세요.

$ npm search express
로그인 후 복사

모듈 만들기

모듈을 만들려면 package.json 파일이 필수입니다. NPM을 사용하여 package.json 파일을 생성할 수 있으며 생성된 파일에는 기본 결과가 포함됩니다.

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (node_modules) runoob                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.runoob.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/runoob/runoob.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址
{
  "name": "runoob",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.runoob.com)",
  ……
}
Is this ok? (yes) yes
로그인 후 복사

본인의 상황에 맞게 위 정보를 입력하셔야 합니다. 마지막에 "yes"를 입력하면 package.json 파일이 생성됩니다.

다음으로 다음 명령을 사용하여 npm 저장소에 사용자를 등록할 수 있습니다(등록하려면 이메일 사용).

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com
로그인 후 복사

다음으로 다음 명령을 사용하여 모듈을 게시합니다.

$ npm publish
로그인 후 복사

如果你以上的步骤都操作正确,你就可以跟其他模块一样使用 npm 来安装。


版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

  • 如果只是修复bug,需要更新Z位。

  • 如果是新增了功能,但是向下兼容,需要更新Y位。

  • 如果有大变动,向下不兼容,需要更新X位。

版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档


NPM 常用命令

除了本章介绍的部分外,NPM还提供了很多功能,package.json里也有很多其它有用的字段。

除了可以在【https://npmjs.org/doc/】查看官方文档外,这里再介绍一些NPM常用命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。

  • 使用npm help 可查看某条命令的详细帮助,例如npm help install。

  • 在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。

  • 使用npm update 可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。

  • 使用npm update -g可以把全局安装的对应命令行程序更新至最新版。

  • 使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。

  • 使用npm unpublish @可以撤销发布自己发布过的某个版本代码。


使用淘宝 NPM 镜像

大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
로그인 후 복사

这样就可以使用 cnpm 命令来安装模块了:

$ cnpm install [name]
로그인 후 복사

更多信息可以查阅:http://npm.taobao.org/。

위 내용은 NPM 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

이 기사에서는 세 가지 JavaScript 패키지 관리자(npm, Yarn, pnpm)를 소개하고, 이 세 가지 패키지 관리자를 비교하고, npm, Yarn 및 pnpm 간의 차이점과 관계에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다. 도와주세요. 질문이 있으면 지적해 주세요!

npm React 설치 시 오류가 발생하면 어떻게 해야 하나요? npm React 설치 시 오류가 발생하면 어떻게 해야 하나요? Dec 27, 2022 am 11:25 AM

npm 반응 설치 오류에 대한 해결 방법: 1. 프로젝트에서 "package.json" 파일을 열고 종속성 개체를 찾습니다. 2. "react.json"을 "devDependency"로 이동합니다. 3. 터미널에서 "npm audit"를 실행합니다. 생산'을 통해 경고를 수정합니다.

package.json 및 package-lock.json을 분석한 기사 package.json 및 package-lock.json을 분석한 기사 Sep 01, 2022 pm 08:02 PM

이번 글에서는 package.json과 package-lock.json 파일에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? 노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? Feb 08, 2023 am 10:09 AM

노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 ​​찾습니다. 4. "확인"을 클릭합니다.

국내 미러(타오바오 미러)의 npm 구성에 대해 이야기해보겠습니다. 국내 미러(타오바오 미러)의 npm 구성에 대해 이야기해보겠습니다. Aug 09, 2022 pm 12:06 PM

npm은 node.js 라이브러리용 패키지 관리 도구입니다. 미러 주소가 해외이므로 라이브러리 설치가 느려질 수 있습니다. 미러 주소를 국내 주소(타오바오 미러)로 변경하면 설치 속도가 빨라집니다. 도서관.

npm node gyp가 실패하는 경우 수행할 작업 npm node gyp가 실패하는 경우 수행할 작업 Dec 29, 2022 pm 02:42 PM

"node-gyp.js"와 "Node.js"의 버전이 일치하지 않아 npm node gyp가 실패했습니다. 해결 방법: 1. "npm 캐시 clean -f"를 통해 노드 캐시를 지웁니다. 2. "npm install - g n" n 모듈을 설치합니다. 3. "n v12.21.0" 명령을 통해 "node v12.21.0" 버전을 설치합니다.

이 글은 npm의 원리를 이해하는 데 도움이 될 것입니다. 이 글은 npm의 원리를 이해하는 데 도움이 될 것입니다. Aug 09, 2022 am 09:23 AM

npm은 JavaScript 세계의 패키지 관리 도구이자 Node.js 플랫폼의 기본 패키지 관리 도구입니다. npm을 통해 코드를 설치, 공유, 배포하고 프로젝트 종속성을 관리할 수 있습니다. 이 글은 여러분에게 npm의 원칙을 안내할 것입니다. 여러분에게 도움이 되기를 바랍니다!

npm과 node.js의 관계는 무엇입니까? npm과 node.js의 관계는 무엇입니까? Jul 11, 2022 pm 06:00 PM

npm은 중국어로 "노드 패키지 관리자"를 의미합니다. Node.js 플랫폼의 기본 패키지 관리 도구입니다. npm은 node.js에 해당하는 타사 플러그인을 관리합니다. npm을 통해 코드를 공유 및 배포하고 노드 프로젝트 종속성을 관리합니다.

See all articles