Pengenalan kepada penggunaan NPM


NPM ialah alat pengurusan pakej yang dipasang bersama-sama dengan NodeJS Ia boleh menyelesaikan banyak masalah dalam penggunaan kod NodeJS adalah seperti berikut:

  • Benarkan pengguna Muat turun ketiga. -pakej parti yang ditulis oleh orang lain daripada pelayan NPM dan menggunakannya secara tempatan.

  • Membenarkan pengguna memuat turun dan memasang program baris arahan yang ditulis oleh orang lain daripada pelayan NPM untuk kegunaan tempatan.

  • Membenarkan pengguna memuat naik pakej atau program baris arahan yang mereka tulis ke pelayan NPM untuk digunakan oleh orang lain.

Memandangkan versi baharu nodejs telah menyepadukan npm, npm juga telah dipasang sebelum ini. Anda juga boleh menguji sama ada pemasangan berjaya dengan memasukkan "npm -v" . Perintahnya adalah seperti berikut. Gesaan versi muncul untuk menunjukkan pemasangan yang berjaya:

$ npm -v
2.3.0

Jika anda memasang versi lama npm, anda boleh menaik tarafnya dengan mudah melalui arahan 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

Jika ia Tetingkap Sistem boleh menggunakan arahan berikut:

npm install npm -g

Gunakan arahan npm untuk memasang modul

npm memasang format sintaks modul Node.js adalah sebagai berikut:

$ npm install <Module Name>

Dalam contoh berikut, kami menggunakan Perintah npm memasang modul rangka kerja web Node.js yang biasa digunakan express:

$ npm install express

Selepas pemasangan, pakej ekspres diletakkan dalam direktori node_modules di bawah direktori projek, jadi dalam kod anda hanya perlu gunakan require('express') tanpa menyatakan laluan pakej pihak ketiga.

var express = require('express');

Pemasangan global dan pemasangan tempatan

pemasangan pakej npm terbahagi kepada dua jenis: pemasangan tempatan (tempatan) dan pemasangan global (global) Berdasarkan baris arahan, perbezaannya Hanya tanpa -g, contohnya

npm install express          # 本地安装
npm install express -g   # 全局安装

Jika ralat berikut berlaku:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087

Penyelesaiannya ialah:

$ npm config set proxy null

Pemasangan setempat

  • 1. Letakkan pakej pemasangan di bawah ./node_modules (direktori tempat perintah npm dijalankan).

  • 2. Pakej yang dipasang secara tempatan boleh diperkenalkan melalui require().

Pemasangan global

  • 1. Letakkan pakej pemasangan di bawah /usr/local atau direktori pemasangan nod anda.

  • 2. Boleh digunakan terus dalam baris arahan.

Jika anda ingin mempunyai fungsi kedua-duanya, anda perlu memasangnya di dua tempat atau gunakan pautan npm.

Seterusnya kami menggunakan kaedah global untuk memasang ekspres

$ npm install express -g

Proses pemasangan mengeluarkan kandungan berikut. Baris pertama mengeluarkan nombor versi dan lokasi pemasangan modul.

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)

Anda boleh menggunakan arahan berikut untuk melihat semua modul yang dipasang secara global:

$ npm ls -g

Gunakan package.json

package.json terletak dalam direktori modul, gunakan Digunakan untuk menentukan sifat pakej. Seterusnya, mari kita lihat fail package.json bagi pakej ekspres, yang terletak di node_modules/express/package.json Kandungan:

{
  "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 Perihalan Harta

  • .

    nama - nama pakej.

  • versi - Nombor versi pakej.

  • penerangan - Penerangan pakej.

  • laman utama - url tapak web rasmi pakej.

  • pengarang - Nama pengarang pakej.

  • penyumbang - Nama penyumbang lain kepada pakej tersebut.

  • pergantungan - senarai pakej bergantung. Jika pakej bergantung tidak dipasang, npm akan memasang pakej bergantung secara automatik dalam direktori node_module.

  • repositori - Jenis tempat di mana kod pakej disimpan, ia boleh menjadi git atau svn, git boleh berada di Github.

  • utama - Medan utama ialah ID modul, yang merupakan penunjuk kepada item utama program anda. Iaitu, jika nama pakej anda adalah ekspres, dan pengguna memasangnya, maka memerlukan("express").

  • kata kunci - Kata kunci


Nyahpasang modul

Kita boleh menggunakan arahan berikut untuk menyahpasang modul Node.js.

$ npm uninstall express


Selepas menyahpasang, anda boleh pergi ke direktori /node_modules/ untuk menyemak sama ada pakej masih wujud, atau gunakan arahan berikut untuk menyemak:

$ npm ls

Kemas Kini Modul

Kita boleh mengemas kini modul menggunakan:

$ npm update express

Cari modul

Gunakan yang berikut untuk mencari modul:

$ npm search express

Buat Modul

Untuk mencipta modul, fail package.json adalah penting. Kita boleh menggunakan NPM untuk menjana fail package.json dan fail yang dijana mengandungi hasil asas.

$ 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) php                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.php.cn)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/php/php.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "php",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.php.cn)",
  ……
}


Is this ok? (yes) yes

Anda perlu memasukkan maklumat di atas mengikut situasi anda sendiri. Selepas memasukkan "ya" pada penghujung, fail package.json akan dijana.

Seterusnya kita boleh menggunakan arahan berikut untuk mendaftarkan pengguna dalam repositori npm (gunakan e-mel untuk mendaftar):

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com

Seterusnya kami menggunakan arahan berikut untuk menerbitkan modul:

$ npm publish

Jika anda telah melakukan langkah di atas dengan betul, anda boleh menggunakan npm untuk memasangnya seperti modul lain.


Nombor versi

Anda akan didedahkan kepada nombor versi apabila anda menggunakan NPM untuk memuat turun dan menerbitkan kod. NPM menggunakan nombor versi semantik untuk mengurus kod.

Nombor versi semantik dibahagikan kepada tiga digit: X.Y.Z, yang masing-masing mewakili nombor versi utama, nombor versi kecil dan nombor versi patch. Apabila kod berubah, nombor versi dikemas kini mengikut prinsip berikut.

  • Jika anda hanya membetulkan pepijat, anda perlu mengemas kini bit Z.

  • Jika fungsi baharu ditambah, tetapi ia serasi ke belakang, bit Y perlu dikemas kini.

  • Jika terdapat perubahan besar, ia akan menjadi tidak serasi ke belakang dan bit X perlu dikemas kini.

Dengan jaminan pada nombor versi ini, apabila mengisytiharkan kebergantungan pakej pihak ketiga, selain bergantung pada nombor versi tetap, anda juga boleh bergantung pada julat nombor versi tertentu. Sebagai contoh, "argv": "0.0.x" bermakna ia bergantung pada versi terkini argv siri 0.0.x.

Untuk semua kaedah penetapan julat nombor versi yang disokong oleh NPM, sila lihat dokumentasi rasmi.


Perintah NPM biasa

Selain bahagian yang diperkenalkan dalam bab ini, NPM juga menyediakan banyak fungsi, dan terdapat banyak medan berguna lain dalam package.json.

Selain melihat dokumentasi rasmi di npmjs.org/doc/, berikut ialah beberapa arahan NPM biasa.

NPM menyediakan banyak arahan, seperti pasang dan terbitkan Gunakan bantuan npm untuk melihat semua arahan.

  • NPM menyediakan banyak arahan, seperti install dan publish, gunakan npm help untuk melihat semua arahan.

  • Gunakan npm help <command> untuk melihat bantuan terperinci bagi arahan, seperti npm help install.

  • Gunakan package.json dalam direktori di mana npm install . -g terletak untuk memasang program baris arahan semasa secara setempat dahulu, yang boleh digunakan untuk ujian tempatan sebelum dikeluarkan.

  • Gunakan npm update <package> untuk mengemas kini modul yang sepadan dalam subdirektori node_modules dalam direktori semasa kepada versi terkini.

  • Gunakan npm update <package> -g untuk mengemas kini program baris arahan yang sepadan yang dipasang secara global kepada versi terkini.

  • Gunakan npm cache clear untuk mengosongkan cache setempat NPM, yang digunakan untuk menangani orang yang menggunakan nombor versi yang sama untuk mengeluarkan versi kod baharu.

  • Gunakan npm unpublish <package>@<version> untuk menyahterbitkan versi kod yang telah anda terbitkan.