จะติดตั้งโมดูล node.js โดยไม่ใช้ npm ได้อย่างไร?


115

มีโมดูลไม่กี่โมดูลที่แสดงอยู่ในหน้า github ของโหนดแต่ไม่ได้เผยแพร่ด้วย npm-Registry ไม่สามารถติดตั้งโมดูลเหล่านี้โดยใช้ npm

อะไรคือวิธีที่ถูกต้องในการติดตั้งโมดูล nodejs เหล่านี้หลังจากโคลนจาก Git

คำตอบ:


73

คุณต้องดาวน์โหลดแหล่งที่มาจาก github ค้นหาไฟล์หลักแล้วรวมไว้ในไฟล์หลักของคุณ

สามารถดูตัวอย่างได้ที่นี่> จะติดตั้งโมดูล node.js ด้วยตนเองได้อย่างไร?

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

เพื่อรวม example.js ในแอปของคุณ คัดลอกลงในโฟลเดอร์แอปพลิเคชันของคุณและต่อท้ายไฟล์ js หลักของคุณ

var moduleName = require("path/to/example.js")


1
เป็นไปได้ไหมที่จะนำเข้าสคริปต์จาก URL ภายนอก (เช่นvar myscript = require("http://www.mywebsite.com/myscript.js")) ดูเหมือนว่าrequireฟังก์ชันจะใช้ไม่ได้กับ URL ภายนอก
Anderson Green

2
ต้องการเป็นแบบซิงโครนัสจริงดังนั้นไม่จึงใช้ไม่ได้กับ URL ภายนอก
Chris Tavares

หมายเหตุ: คุณต้องลบ-masterต่อท้ายไปยังไลบรารี github ในขณะที่มีการเปลี่ยนแปลงไปxxx-master xxx
บาร์

65

ไม่สามารถติดตั้งโมดูลเหล่านี้โดยใช้ npm

จริงๆแล้วคุณสามารถติดตั้งโมดูลได้โดยระบุแทนชื่อโลคัลพา ธ ตราบใดที่ที่เก็บมีpackage.jsonไฟล์ที่ถูกต้องควรใช้งานได้


พิมพ์npm -lและวิธีใช้สวย ๆ จะปรากฏดังนี้:

CLI:

...
install     npm install <tarball file>
                npm install <tarball url>
                npm install <folder>
                npm install <pkg>
                npm install <pkg>@<tag>
                npm install <pkg>@<version>
                npm install <pkg>@<version range>

                Can specify one or more: npm install ./foo.tgz bar@stable /some/folder
                If no argument is supplied and ./npm-shrinkwrap.json is 
                present, installs dependencies specified in the shrinkwrap.
                Otherwise, installs dependencies from ./package.json.

สิ่งที่ดึงดูดสายตาของฉันคือ: npm install <folder>

ในกรณีของฉันฉันมีปัญหากับmrtโมดูลดังนั้นฉันจึงทำสิ่งนี้ (ในไดเรกทอรีชั่วคราว)

  • โคลน repo

     git clone https://github.com/oortcloud/meteorite.git
  • และฉันติดตั้งทั่วโลกด้วย:

     npm install -g ./meteorite

เคล็ดลับ:

นอกจากนี้คุณยังสามารถติดตั้งในลักษณะเดียวกันกับ repo ไปยังโปรเจ็กต์ npm ในพื้นที่ด้วย:

     npm install ../meteorite

และยังสามารถสร้างลิงค์ไปยัง repo ได้ในกรณีที่จำเป็นต้องใช้โปรแกรมแก้ไขในการพัฒนา:

     npm link ../meteorite

1
ยอดเยี่ยมที่สุด ฉันมีปัญหากับโมดูลเช่นกันดังนั้นฉันจึงแยกและโคลนลงในไดเร็กทอรีพี่น้องของโครงการเว็บของฉันอัปเดตการอ้างอิงทั้งหมดเป็นเวอร์ชันล่าสุดจากนั้นติดตั้งในโครงการเว็บของฉันด้วย 'npm install ../ Broken_module_name ใช้งานได้เหมือนมีเสน่ห์ ขอบคุณ!
Perry Tew

+1 แต่จะใช้ไม่ได้หากเราไม่มีการเข้าถึงเครือข่ายสำหรับ npm และโมดูลที่เรากำลังติดตั้งnpm install <folder>มีการอ้างอิง npm อื่น ๆ อีกมากมาย
Abdul Rauf

หาก npm พบแพ็กเกจใน node_modules ไม่ว่าจะจากขอบเขต global (ไม่แน่ใจที่นี่) หรือโลคัลก็จะไม่พยายามดาวน์โหลดอีก ซึ่งหมายความว่าหากการอ้างอิงโดยตรงทั้งหมดของ repo สามารถดาวน์โหลดล่วงหน้าและคัดลอกไปยังโฟลเดอร์ node_module ได้ก็จะใช้งานได้
Tiberiu C.

11

ดาวน์โหลดโค้ดจาก github ลงในไดเร็กทอรี node_modules

var moduleName = require("<name of directory>")

ที่ควรทำ

หากโมดูลมีการพึ่งพาและมี package.json ให้เปิดโมดูลและป้อนการติดตั้ง npm

หวังว่านี่จะช่วยได้


ฉันคิดว่ารหัสนี้ใช้ได้ถ้าไฟล์หลักชื่อindex.js
R3tep

8

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

เริ่มขั้ว cd ในโครงการของคุณจากนั้น:

npm ติดตั้งhttps://github.com/repo/npm_module.git -บันทึก


1
คำตอบที่ฉันกำลังมองหา
Faisal Mq

จะเกิดอะไรขึ้นเมื่อแพ็คเกจถูกเปลี่ยนคุณจะอัปเดตเป็นเวอร์ชันล่าสุดได้อย่างไร? ATM "วิธีแก้ปัญหา" เดียวที่ฉันพบคือการลบ fodler จาก node_modules ลบรายการ package.json แล้วเพิ่มใหม่ซึ่งเป็นความเจ็บปวด ...
Predrag Stojadinović

1

เป็นขั้นเป็นตอน:

  • สมมติว่าคุณกำลังทำงานในโครงการuse-gulpที่ใช้ ( requires) node_modulesเหมือนและgulpgulp-util
  • ตอนนี้คุณต้องการแก้ไขgulp-utillib และทดสอบในเครื่องกับuse-gulpโปรเจ็กต์ของคุณ...
  • gulp-utilโครงการส้อมบน github \ bitbucket เป็นต้น
  • เปลี่ยนเป็นโครงการของคุณ: cd use-gulp/node_modules
  • โคลนgulp-utilเป็นgulp-util-dev:git clone https://.../gulp-util.git gulp-util-dev
  • เรียกใช้npm installเพื่อให้แน่ใจว่าการอ้างอิงของgulp-util-devที่มีอยู่
  • ตอนนี้คุณมีกระจกgulp-utilเป็นgulp-util-dev. ในuse-gulpโปรเจ็กต์ของคุณตอนนี้คุณสามารถแทนที่: require('gulp-util')...;โทรด้วย: require('gulp-util-dev')เพื่อทดสอบการเปลี่ยนแปลงที่คุณทำgulp-util-dev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.