क्या मैं Node.js में चल रहे जावास्क्रिप्ट फ़ाइल से एनपीएम पैकेज स्थापित कर सकता हूं? उदाहरण के लिए, मुझे एक स्क्रिप्ट चाहिए, चलिए इसे "script.js" कहते हैं कि किसी भी तरह (... एनपीएम का उपयोग कर या नहीं ...) आमतौर पर एनपीएम के माध्यम से उपलब्ध एक पैकेज स्थापित करें। इस उदाहरण में, मैं "एफएफआई" स्थापित करना चाहता हूं। (NPM ffi स्थापित)क्या मैं Node.js में चल रहे जावास्क्रिप्ट से एनपीएम पैकेज स्थापित कर सकता हूं?
उत्तर
यह वास्तव में प्रोग्राम के रूप में NPM का उपयोग करना संभव है, और यह दस्तावेज के पुराने संशोधनों में उल्लिखित किया गया। इसके बाद से आधिकारिक दस्तावेज से हटा दिया गया, लेकिन अभी भी निम्न कथन से स्रोत नियंत्रण पर मौजूद है:
हालांकि NPM प्रोग्राम के रूप में इस्तेमाल किया जा सकता है अपने एपीआई CLI केवल द्वारा प्रयोग के लिए है, और इसकी कोई गारंटी नहीं किसी भी अन्य उद्देश्य के लिए अपनी फिटनेस के संबंध में बनाया गया। यदि आप विश्वसनीय रूप से कुछ कार्य करने के लिए एनपीएम का उपयोग करना चाहते हैं, तो सबसे सुरक्षित बात यह है कि उपयुक्त तर्कों के साथ वांछित एनपीएम कमांड का आह्वान करना है।
NPM का अर्थ संस्करण बल्कि अंतर्निहित एपीआई से, CLI खुद को दर्शाता है। आंतरिक एपीआई स्थिर रहने के लिए गारंटी नहीं तब भी जब NPM के संस्करण को इंगित करता है कोई तोड़ने परिवर्तन semver के अनुसार बनाया गया है है।
var npm = require('npm') npm.load(myConfigObject, function (er) { if (er) return handlError(er) npm.commands.install(['some', 'args'], function (er, data) { if (er) return commandFailed(er) // command succeeded, and data might have some info }) npm.registry.log.on('log', function (message) { ... }) })
के बाद से NPM
node_modules
फ़ोल्डर में मौजूद है, आपrequire('npm')
उपयोग कर सकते हैं किसी भी अन्य मॉड्यूल की तरह लोड करने के लिए:
मूल प्रलेखन में, निम्नलिखित कोड नमूना है कि प्रदान किया गया था। मॉड्यूल स्थापित करने के लिए, आप npm.commands.install()
का उपयोग करना चाहेंगे।
आप स्रोत में देखने की जरूरत है, तो यह GitHub पर भी है।
var npm = require('npm');
npm.load(function(err) {
// handle errors
// install module ffi
npm.commands.install(['ffi'], function(er, data) {
// log errors or data
});
npm.on('log', function(message) {
// log installation progress
console.log(message);
});
});
ध्यान दें कि स्थापित कार्य करने के लिए पहला तर्क एक सरणी है: यहाँ कोड है, जो किसी भी कमांड लाइन तर्क के बिना npm install
चल के बराबर है की एक पूरी काम कर उदाहरण है। सरणी का प्रत्येक तत्व एक मॉड्यूल है जो npm स्थापित करने का प्रयास करेगा।
अधिक उन्नत उपयोग स्रोत नियंत्रण पर npm-cli.js
फ़ाइल में पाया जा सकता।
हां। यदि आप एक प्रणाली आदेश पर अमल करने
var exec = require('child_process').exec,
child;
child = exec('npm install ffi',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
हां, आप कर सकते हैं, हालांकि कुछ निर्भरताएं स्थापित करने में असफल रहेंगी (अनुभव से बात कर रही है, क्योंकि एक बार जब मैंने वास्तव में एक [सीआई] (https://github.com/matejkramny/node-ci) सर्वर node.js के लिए लिखा था) –
विंडोज़ पर यह काम नहीं करता है! आपको इसके बजाय 'npm.cmd' कॉल करना होगा। – DUzun
थोड़ा आसान
var exec = require('child_process').exec;
child = exec('npm install ffi').stderr.pipe(process.stderr);
यह भी लाभ है कि stderr (और stdout) मुद्रित होते हैं जैसे कि वे निष्पादन के अंत में नहीं होते हैं! – mvermand
अगर आप आउटपुट के रूप में अच्छी तरह से करना चाहते हैं child_process उपयोग कर सकते हैं आप उपयोग कर सकते हैं यह वास्तव में हो सकता है:
var child_process = require('child_process');
child_process.execSync("npm install ffi",{stdio:[0,1,2]});
इस जिस तरह से आप इंस्टॉलेशन देख सकते हैं जैसे आप इसे हाथ में करते हैं और खराब आश्चर्य से बचते हैं (बफर पूर्ण, आदि)
मेरे पास एक परियोजना निर्देशिका के अंदर काम करने के लिए पहला उदाहरण प्राप्त करने का प्रयास करने का एक समय था, अगर किसी और को यह पता चलता है तो यहां पोस्ट करना।जहाँ तक मेरा बता सकते हैं, NPM अभी भी काम करता है ठीक सीधे लोड, लेकिन क्योंकि यह CLI मान लिया गया है, हम अपने आप एक छोटे से यह स्थापित करने दोहराना:
// this must come before load to set your project directory
var previous = process.cwd();
process.chdir(project);
// this is the part missing from the example above
var conf = {'bin-links': false, verbose: true, prefix: project}
// this is all mostly the same
var cli = require('npm');
cli.load(conf, (err) => {
// handle errors
if(err) {
return reject(err);
}
// install module
cli.commands.install(['ffi'], (er, data) => {
process.chdir(previous);
if(err) {
reject(err);
}
// log errors or data
resolve(data);
});
cli.on('log', (message) => {
// log installation progress
console.log(message);
});
});
मैं एक मॉड्यूल के लेखक ऐसा करने की अनुमति कर रहा हूँ वास्तव में आपके मन में क्या है। live-plugin-manager देखें।
आप एनपीएम, गिथब या किसी फ़ोल्डर से लगभग किसी भी पैकेज को स्थापित और चला सकते हैं।
एक उदाहरण यहाँ:
import {PluginManager} from "live-plugin-manager";
const manager = new PluginManager();
async function run() {
await manager.install("moment");
const moment = manager.require("moment");
console.log(moment().format());
await manager.uninstall("moment");
}
run();
उपरोक्त कोड में मैं क्रम, लोड पर moment
पैकेज स्थापित करने और इसे निष्पादित। अंत में मैं इसे अनइंस्टॉल करता हूं।
आंतरिक रूप से मैं npm
क्ली नहीं चलाता लेकिन वास्तव में संकुल डाउनलोड करता हूं और नोड वीएम सैंडबॉक्स के अंदर चलाता हूं।
- 1. क्या मैं कॉफ़ीस्क्रिप्ट में एनपीएम पैकेज लिख सकता हूं?
- 2. विश्व स्तर पर स्थापित एनपीएम-पैकेज काम नहीं कर रहे
- 3. डॉकर कंटेनर में एनपीएम स्थापित नहीं कर सकता है?
- 4. एनपीएम काम कर रहे
- 5. मैं SQL प्लस से चल रहे SQL स्क्रिप्ट में एम्पर्सेंड को कैसे अनदेखा कर सकता हूं?
- 6. एनपीएम: एनपीएम पैकेज
- 7. नोड.जेएस स्थापित करते समय node.js रनटाइम और एनपीएम पैकेज मैनेजर विकल्पों के बीच क्या अंतर है?
- 8. चल रहे node.js अनुप्रयोग से उपयोग किए गए एनपीएम मॉड्यूल का निर्धारण
- 9. मैं स्क्रैच से पीईपीआई समकक्ष कैसे स्थापित कर सकता हूं?
- 10. क्या मैं बोवर या एनपीएम के बिना कोणीय सामग्री पुस्तकालय स्थापित कर सकता हूं?
- 11. मैं बोटो का उपयोग कर चल रहे इंस्टेंस से ईसी 2 छवि कैसे बना सकता हूं?
- 12. मैं node.js में प्रोटैक्टर एनपीएम मॉड्यूल को कैसे अपडेट कर सकता हूं?
- 13. क्या मैं उबंटू में एक्सकोड स्थापित कर सकता हूं?
- 14. मैं यार्न का उपयोग कर सभी वैश्विक रूप से स्थापित एनपीएम पैकेज कैसे सूचीबद्ध करूं?
- 15. Node.js http अनुरोध काम नहीं कर रहे
- 16. क्या मैं जावास्क्रिप्ट में डेटा संपीड़ित कर सकता हूं?
- 17. मैं अपने वर्चुअलएन्व में कैसे स्थापित कर सकता हूं?
- 18. क्या मैं एनपीएम में डीबग स्क्रिप्ट जोड़ सकता हूं?
- 19. एनपीएम प्राप्त करना: कमांड नहीं मिला। नोड पहले से स्थापित होने पर मैं एनपीएम को कैसे पुनर्स्थापित कर सकता हूं? एनपीएम कहां गया?
- 20. क्या मैं एनपीएम इंस्टॉल कर सकता हूं एक निश्चित पैकेज.जेसन प्रारूप का पालन करें?
- 21. मैं इंटरनेट कनेक्शन के बिना ActivePerl में पैकेज कैसे स्थापित कर सकता हूं?
- 22. फ्लास्क का उपयोग करके मैं एनपीएम पैकेज कैसे कर सकता हूं?
- 23. मैं चल रहे पर्ल प्रक्रिया में डीबगर कैसे संलग्न कर सकता हूं?
- 24. क्या makefiles कर रहे हैं - स्थापित कर
- 25. पैकेज.जेसन पीढ़ी/एनपीएम अप्रयुक्त पैकेज
- 26. मैं वर्तमान में चल रहे कोड का फ़ाइल एक्सटेंशन कैसे प्राप्त कर सकता हूं?
- 27. गीवेंट में, मैं सभी चल रहे ग्रीनलेट्स के स्टैक निशान कैसे डंप कर सकता हूं?
- 28. क्या मैं सीधे node.js से .coffee फ़ाइल चला सकता हूं?
- 29. मैं php5/ubuntu में pspell कैसे स्थापित कर सकता हूं?
- 30. क्या मैं उल्का अंडरस्कोर पैकेज अपडेट कर सकता हूं?
यदि यह किसी की सहायता करता है- सुनिश्चित करें कि आप पहले npm - nave' इंस्टॉल करें। उदाहरण बहुत अच्छा काम करता है :) – mikermcneil
इसके अलावा, सावधान रहें- 'npm' में बहुत सारी निर्भरताएं हैं, इसलिए इसे अपने मॉड्यूल में जोड़ना संभवत: डाउनलोड करने में अधिक समय लगेगा। अपने उपयोगकर्ताओं की मशीनों पर पहले से स्थापित वैश्विक एनपीएम का लाभ उठाने के लिए 'child_process' उत्तरों में से एक को देखें। – mikermcneil
'npm.config' को' npm.load' पर पास न करें! यहां तक कि @isaacs नहीं जानता कि किस तरह की अजीब चीजें तब होती हैं! Https://github.com/npm/npm/issues/4861#issuecomment-40533836 इसके बजाय, आप केवल 1 तर्क छोड़ सकते हैं। –