Latest web development tutorials

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
[email protected] /usr/local/lib/node_modules/npm

หากระบบหน้าต่างใช้คำสั่งต่อไปนี้:

npm install npm -g

NPM ติดตั้งใช้โมดูลคำสั่ง

NPM ติดตั้งโมดูล Node.js ไวยากรณ์เป็นดังนี้:

$ npm install <Module Name>

ตัวอย่างต่อไปนี้เราจะใช้คำสั่งในการติดตั้ง NPM กรอบการทำงานร่วม Node.jsเว็บโมดูลด่วน:

$ npm install express

เมื่อติดตั้งด่วนแพ็คเก็ตที่วางอยู่ในไดเรกทอรี node_modules ในไดเรกทอรีโครงการเพื่อให้รหัสผ่านเพียงrequire ( 'แสดง') เหมือนกันโดยไม่ได้ระบุเส้นทางไปยังแพคเกจของบุคคลที่สาม

var express = require('express');

การติดตั้งทั่วโลกและการติดตั้งภายใน

NPM แพคเกจติดตั้งลงในการติดตั้งภายใน (ท้องถิ่น) การติดตั้งทั่วโลก (Global) เป็นสองเคาะจากบรรทัดคำสั่งที่แตกต่างเพียงอย่างเดียวคือไม่มี -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 (directory ที่คำสั่งจะถูกเรียกใช้ NPM) ถ้าไม่ไดเรกทอรี node_modules จะสร้างในไดเรกทอรีปัจจุบัน node_modules ไดเรกทอรี NPM เรียกคำสั่ง
  • 2. สามารถนำแพคเกจติดตั้งภายในผ่านต้องการ ()

การติดตั้งทั่วโลก

  • 1. วางแพ็คเกจการติดตั้งวางไว้ใน / usr / local หรือโหนดไดเรกทอรีการติดตั้งของคุณ
  • 2. คุณสามารถใช้โดยตรงในบรรทัดคำสั่ง

หากคุณต้องการที่จะมีคุณลักษณะทั้งสองคุณจะต้องติดตั้งในสถานที่สองหรือใช้การเชื่อมโยง NPM

ต่อไปเราจะใช้ทั่วโลกติดตั้งด่วน

$ npm install express -g

กระบวนการติดตั้งการส่งออกต่อไปนี้บรรทัดแรกของจำนวนและการติดตั้งกับรุ่นส่งออกที่ตั้งของโมดูล

[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อดูโมดูลที่ติดตั้งทั่วโลกทั้งหมด:

$ npm ls -g

ใช้ package.json

package.json อยู่ในโมดูลไดเรกทอรีกำหนดคุณสมบัติของแพคเกจ ลองดูที่ node_modules / ด่วนเนื้อหาไฟล์ package.json แพคเกจด่วนอยู่ / package.json:

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.13.3",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "[email protected]"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "[email protected]"
    },
    {
      "name": "Ciaran Jessup",
      "email": "[email protected]"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "[email protected]"
    },
    {
      "name": "Guillermo Rauch",
      "email": "[email protected]"
    },
    {
      "name": "Jonathan Ong",
      "email": "[email protected]"
    },
    {
      "name": "Roman Shtylman",
      "email": "[email protected]"
    },
    {
      "name": "Young Jae Sim",
      "email": "[email protected]"
    }
  ],
  "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": "[email protected]",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "[email protected]"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "[email protected]"
    },
    {
      "name": "jongleberry",
      "email": "[email protected]"
    },
    {
      "name": "dougwilson",
      "email": "[email protected]"
    },
    {
      "name": "rfeng",
      "email": "[email protected]"
    },
    {
      "name": "aredridel",
      "email": "[email protected]"
    },
    {
      "name": "strongloop",
      "email": "[email protected]"
    },
    {
      "name": "defunctzombie",
      "email": "[email protected]"
    }
  ],
  "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 ทรัพย์สิน

  • ชื่อ - แพคเกจ

  • รุ่น - หมายเลขรุ่นของแพคเกจ

  • คำอธิบาย - คำอธิบายของแพคเกจ

  • แพคเกจ URL ของเว็บไซต์อย่างเป็นทางการ- หน้าแรก

  • ผู้เขียน - ผู้เขียนชื่อแพคเกจ

  • นักเขียนอื่น ๆ แพคเกจชื่อ- ร่วมสมทบ

  • รายการอ้างอิง- อ้างอิงถ้าอ้างอิงไม่ได้ติดตั้ง NPM โดยอัตโนมัติจะติดตั้งแพคเกจขึ้นอยู่ในไดเรกทอรี node_module

  • พื้นที่เก็บข้อมูลประเภท - พื้นที่จัดเก็บรหัสแพคเกจทั้งคอมไพล์หรือ SVN, คอมไพล์ที่มีอยู่บน Github

  • หลัก - สนามหลักเป็นรหัสโมดูลซึ่งเป็นตัวชี้ไปยังโครงการที่สำคัญของโปรแกรมของคุณนั่นคือถ้าคุณแพ็คชื่อด่วนแล้วผู้ใช้ในการติดตั้งและจากนั้นต้องใช้ ( "ด่วน")

  • คำหลัก - คำสำคัญ


โมดูลถ่าย

เราสามารถใช้คำสั่งต่อไปนี้เพื่อถอนการติดตั้งโมดูล Node.js

$ npm uninstall express

หลังจากถอนการติดตั้งคุณสามารถไปกับแพคเกจ / node_modules / แคตตาล็อกต่อไปคือการมีหรือใช้คำสั่งต่อไปนี้:

$ npm ls

ปรับปรุงโมดูล

เราสามารถใช้คำสั่งต่อไปนี้เพื่อปรับปรุงโมดูล:

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

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


Is this ok? (yes) yes

ข้อมูลข้างต้นคุณจะต้องป้อนข้อมูลสถานการณ์ของคุณเอง หลังจากที่การป้อนข้อมูลสุดท้าย "ใช่" จะสร้างไฟล์ package.json

แล้วเราสามารถใช้คำสั่งต่อไปนี้เพื่อลงทะเบียนผู้ใช้ (ใช้ไปรษณีย์ลงทะเบียน) ในพื้นที่เก็บข้อมูล NPM:

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]

ต่อไปเราจะใช้คำสั่งต่อไปนี้เพื่อปล่อยโมดูล:

$ npm publish

ถ้าคุณทำตามขั้นตอนข้างต้นได้ทำอย่างถูกต้องคุณสามารถใช้เดียวกันกับโมดูลอื่น ๆ ในการติดตั้ง NPM


หมายเลขรุ่น

NPM ดาวน์โหลดและใช้รหัสจะได้รับการปล่อยตัวเมื่อสัมผัสกับหมายเลขรุ่น NPM โดยใช้หมายเลขรุ่นความหมายในการจัดการรหัสที่นี่ในเวลาสั้น ๆ

รุ่นความหมายแบ่งออกเป็นสาม XYZ คิดเป็นจำนวนรุ่นใหญ่จำนวนรุ่นรองและรุ่นแพทช์จำนวน เมื่อมีการเปลี่ยนแปลงรหัสหมายเลขรุ่นของการปรับปรุงให้เป็นไปตามหลักการดังต่อไปนี้

  • ถ้าเพียง แต่แก้ไขข้อผิดพลาดคุณจำเป็นต้องปรับปรุง Z บิต
  • หากคุณเป็นคุณลักษณะใหม่ แต่เข้ากันได้ก็ต้องมีการปรับปรุง Y บิต
  • หากมีการเปลี่ยนแปลงขนาดใหญ่เข้ากันไม่ได้ลงก็ต้องมีการปรับปรุงตำแหน่ง X

ด้วยความเชื่อมั่นอย่างนี้หลังจากหมายเลขรุ่นในคำสั่งขึ้นอยู่กับแพคเกจของบุคคลที่สามนอกเหนือจากการพึ่งพาหมายเลขรุ่นที่คงที่ แต่ยังขึ้นอยู่กับช่วงของตัวเลขรุ่น ยกตัวอย่างเช่น "argv": "0.0.x" ขึ้นอยู่กับชุด 0.0.x หมายถึงรุ่นล่าสุดของ argv

ทุกรุ่นรองรับช่วงเลขที่กำหนดเป้าหมาย NPM สามารถดู เอกสารอย่างเป็นทางการ


คำสั่งทั่วไป NPM

นอกเหนือไปจากการแสดงในบทนี้, NPM นอกจากนี้ยังมีจำนวนมากของคุณสมบัติ package.json ยังมีเขตข้อมูลที่มีประโยชน์อื่น ๆ อีกมากมาย

นอกจากนี้ยังมี npmjs.org/doc/ ตรวจสอบเอกสารอย่างเป็นทางการ แต่แล้วนี่คือบางส่วนที่ใช้กันทั่วไปคำสั่ง NPM

NPM ให้มากของคำสั่งเช่นการติดตั้งและเผยแพร่โดยใช้วิธีใช้ NPM เพื่อดูคำสั่งทั้งหมด

  • NPM ให้มากของคำสั่งเช่น install และ publish การใช้ npm help เพื่อดูคำสั่งทั้งหมด

  • ใช้ npm help <command> เพื่อดูรายละเอียดของความช่วยเหลือสำหรับคำสั่งเช่น npm help install

  • ใน package.json ใช้ไดเรกทอรีดังต่อไป npm install . -g สามารถติดตั้งไว้บนโปรแกรมบรรทัดคำสั่งปัจจุบันที่สามารถนำมาใช้สำหรับการทดสอบในท้องถิ่นก่อนที่จะปล่อย

  • ใช้ npm update <package> สามารถใส่ไดเรกทอรีปัจจุบัน node_modules ไดเรกทอรีย่อยภายในโมดูลสอดคล้องกับเวอร์ชันล่าสุด

  • ใช้ npm update <package> -g สามารถสอดคล้องกับโปรแกรมบรรทัดคำสั่งติดตั้งทั่วโลกปรับปรุงให้เป็นเวอร์ชั่นล่าสุด

  • ใช้ npm cache clear สามารถล้าง NPM แคชท้องถิ่นเพื่อจัดการกับหมายเลขรุ่นเดียวกันสำหรับแท็กรุ่นใหม่

  • ใช้ npm unpublish <package>@<version> > สามารถเพิกถอนโพสต์เปิดตัวรุ่นรหัสของตัวเอง


ใช้กระจก Taobao NPM

เราทุกคนรู้ว่าการใช้งานโดยตรงภายในประเทศของ NPM กระจกอย่างเป็นทางการจะช้ามากมีการแนะนำให้ใช้กระจก Taobao NPM

Taobao NPM เป็นภาพสะท้อนในกระจก npmjs.org เสร็จสมบูรณ์คุณสามารถใช้แทนรุ่นอย่างเป็นทางการ (อ่านอย่างเดียว) ความถี่ในปัจจุบันตรงกัน 10 นาทีเพื่อให้มั่นใจว่าเท่าที่เป็นไปได้ที่จะประสานกับการให้บริการอย่างเป็นทางการ

คุณสามารถใช้ Taobao cnpm ที่กำหนดเอง (สนับสนุนการบีบอัด gzip) เครื่องมือบรรทัดคำสั่งแทน NPM เริ่มต้น:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

โมดูลนี้จะสามารถติดตั้งได้โดยใช้คำสั่ง cnpm:

$ cnpm install [name]

ข้อมูลเพิ่มเติมสามารถพบได้: http://npm.taobao.org/