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/