প্যাকেজ.জসন ব্যবহার করে বিশ্বব্যাপী এবং স্থানীয়ভাবে নির্ভরতা ইনস্টল করুন


189

এনপিএম ব্যবহার করে আমরা -gবিকল্পটি ব্যবহার করে বিশ্বব্যাপী মডিউলগুলি ইনস্টল করতে পারি । আমরা প্যাকেজ.জসন ফাইলে এটি কীভাবে করতে পারি?

মনে করুন, এগুলি আমার প্যাকেজ.জসন ফাইলের উপর নির্ভরশীলতা

"dependencies": {
    "mongoose": "1.4.0",
    "node.io" : "0.3.3",
    "jquery"  : "1.5.1",
    "jsdom"   : "0.2.0",
    "cron"    : "0.1.2"
  }

আমি যখন চালনা করি npm install, আমি কেবলমাত্র node.ioবিশ্বব্যাপী ইনস্টল করা চাই, বাকী অন্যদের স্থানীয়ভাবে ইনস্টল করা উচিত। এই জন্য কোন বিকল্প আছে?


11
আপনি পারবেন না। আপনি তবে "preferGlobal": trueমডিউলটির জন্য প্যাকেজ.জসনের ভিতরে সেট করতে পারেন ।
রায়নস

হ্যাঁ, আমি <কোড> পছন্দসই গ্লোবাল </ কোড> সম্পর্কে জানি তবে এটি বিশ্বব্যাপী সমস্ত নির্ভরতা ইনস্টল করবে ... যাইহোক ধন্যবাদ! আমি অনুমান করি যে এর মতো কোনও বৈশিষ্ট্য নেই ...
মধুসূদন

3
আমি মনে করি না এটা হয়। এটি বিশ্বব্যাপী বর্তমান মডিউলটি ইনস্টল করে। যদি কোনও স্বনির্ভরতা এটি সত্যতে সেট করে থাকে তবে এটি বিশ্বব্যাপীও ইনস্টল করা যেতে পারে। সত্যিই আপনার কেবল # নোড.জেজে @ আইস্যাকগুলি জিজ্ঞাসা করা উচিত
রায়নস

3
বৈশ্বিক ইনস্টলেশন নির্ভরতা নরক উত্পাদন করতে পারে। বলুন প্যাকেজ এটির 0.3.0 সংস্করণ এবং প্যাকেজ বি সংস্করণ 0.3.4 প্রয়োজন এবং উভয়ই অন্যান্য সংস্করণে কাজ করে না। তারপরে আপনার দুটি প্যাকেজ সামঞ্জস্য করার জন্য দুটি মেশিনের প্রয়োজন হবে।
স্পষ্টভাবে

6
এই মন্তব্যগুলির "preferGlobal":trueকোনওটিই এই সমস্যাটিতে আমাকে সহায়তা করে না ... আপনার কোডটি আমাকে কেবলমাত্রর চেয়ে বেশি দেখানো হলে ভালো হবে ... প্যাকেজ.জসনে এটি কোথায় রাখবেন তা আমি সত্যিই জানি না। npmjs.org/doc/json.html এনপিএম ডকুমেন্টেশন বলছে যে পছন্দসই গ্লোবাল আপনার নিজস্ব প্যাকেজের জন্য এবং সেটিংটি এটি বিশ্বব্যাপী আপনার নিজস্ব প্যাকেজ ইনস্টল করে দেবে। যদিও এটি গাইডের মতো বেশি মনে হচ্ছে।
পিপিপিউল

উত্তর:


216

নতুন দ্রষ্টব্য: আপনি সম্ভবত এটি করতে চান বা প্রয়োজন নেই need আপনি সম্ভবত যা করতে চান তা কেবল devDependenciesআপনার প্যাকেজ.জসনের বিভাগে বিল্ড / টেস্ট ইত্যাদির জন্য এই জাতীয় কমান্ড নির্ভরতা রাখুন। যে কোনও সময় আপনি scriptsপ্যাকেজ থেকে কোনও কিছু ব্যবহার করুন j

উদাহরণ স্বরূপ:

npm i --save-dev mocha # Install test runner locally
npm i --save-dev babel # Install current babel locally

তারপরে প্যাকেজ.জসনে:

// devDependencies has mocha and babel now

"scripts": {
  "test": "mocha",
  "build": "babel -d lib src",
  "prepublish": "babel -d lib src"
}

তারপরে আপনার কমান্ড প্রম্পটে আপনি চালাতে পারেন:

npm run build # finds babel
npm test # finds mocha

npm publish # will run babel first

তবে আপনি যদি সত্যই বিশ্বব্যাপী ইনস্টল করতে চান তবে আপনি প্যাকেজ.জসনের স্ক্রিপ্ট বিভাগে একটি প্রিনস্টল যুক্ত করতে পারেন:

"scripts": {
  "preinstall": "npm i -g themodule"
}

সুতরাং আসলে আমার এনএমপি ইনস্টল আবার এনপিএম ইনস্টল চালায় .. যা অদ্ভুত তবে কাজ বলে মনে হচ্ছে।

দ্রষ্টব্য: আপনি যদি এমন সাধারণ সেটআপ ব্যবহার করছেন npmযেখানে গ্লোবাল নোড প্যাকেজ ইনস্টল করা প্রয়োজন সেখানে আপনার সমস্যা থাকতে পারে sudo। একটি বিকল্প হ'ল আপনার npmকনফিগারেশনটি পরিবর্তন করা যাতে এটি প্রয়োজন হয় না:

npm config set prefix ~/npm, আপনারতে সংযোজন করে AT PATH এ $ HOME / npm / bin যুক্ত export PATH=$HOME/npm/bin:$PATHকরুন ~/.bashrc


3
আমি এটির সাথে কাজ করতে সক্ষম হইনি npm i -g underscore-cli। এটি WD ভুল হওয়ার বিষয়ে একটি সতর্কতা দেয়। আমার ধারণা ডাব্লুডিডি মানে ওয়ার্কিং ডিরেক্টরী directory কমান্ড লাইনে আমি যখন ম্যানুয়ালি এটি করি তখন জিনিসগুলি ভালভাবে চলে যায় তবে ব্যবহারকারীরা যদি আমার কোডটি একটি সাধারণ সাথে ইনস্টল করতে ডিল করতে সক্ষম হন তবে আমি পছন্দ করবnpm install
পিপিপিউল

3
পিপিপিউল - আমি যখন আবার এই কৌশলটি চেষ্টা করেছি তখন আমারও একই সমস্যা হয়েছিল। হতে পারে আমার সেটআপ এখন অন্যরকম বা এটি কেবল নির্দিষ্ট মডিউলগুলির সাথে কাজ করে। নইলে আমার ধারণা এনপিএম দিয়ে কিছু পরিবর্তন হয়েছে?
জেসন লাইভসে

9
প্যাকেজটি ইতিমধ্যে ইনস্টল রয়েছে কিনা তা ছাড়াও আপনি প্রাক-চেক করতে পারেন: npm list module -g || npm install module -gএনএমপি হিসাবে সঠিক প্রস্থান মানগুলি ফিরে আসবে।
এম 90

3
@ সিএমসিডিগ্রাগনকাই: এটি সত্যই আলাদা প্রশ্ন হওয়া উচিত should তবে, আপনি আপনার কমান্ডগুলিকে একটি স্ক্রিপ্টে রেখেছেন এবং স্ক্রিপ্টটিকে নির্বাহের আদেশ হিসাবে (যেমন "preinstall" : "scripts/preinstall.sh") নির্দিষ্ট করেছেন।
আমরা সমস্ত মনিকা

1
@ সিএমসিডিগ্রাগনকাই তাদের সাথে একত্রিত হয়েছেন &&, উদাহরণস্বরূপnpm install -g bower && npm install -g grunt-cli
ম্যাটসেম্যান

12

নীচে বর্ণিত অসুবিধাগুলির কারণে, আমি স্বীকৃত উত্তরটি অনুসরণ করার সুপারিশ করব :

npm install --save-dev [package_name]এরপরে স্ক্রিপ্টগুলি কার্যকর করে ব্যবহার করুন :

$ npm run lint
$ npm run build
$ npm test

আমার আসল তবে প্রস্তাবিত উত্তরগুলি অনুসরণ করে।


গ্লোবাল ইনস্টল ব্যবহার না করে আপনি প্যাকেজটি আপনার devDependencies( --save-dev) এ যুক্ত করতে পারেন এবং তারপরে আপনার প্রকল্পের যে কোনও জায়গা থেকে বাইনারি চালাতে পারেন:

"$(npm bin)/<executable_name>" <arguments>...

তোমার ক্ষেত্রে:

"$(npm bin)"/node.io --help

এই প্রকৌশলী একটি প্রদত্ত npm-execশর্টকাট হিসাবে ওরফে। এই ইঞ্জিনিয়ার নামক একটি শেলস্ক্রিপ্ট ব্যবহার করেন env.sh। তবে আমি $(npm bin)কোনও অতিরিক্ত ফাইল বা সেটআপ এড়াতে সরাসরি ব্যবহার করতে পছন্দ করি ।

যদিও এটি প্রতিটি কলকে আরও কিছুটা বড় করে তোলে, এটি কেবল কাজ করা উচিত , প্রতিরোধ করে:

  • সম্ভাব্য নির্ভরতা বৈশ্বিক প্যাকেজগুলির সাথে দ্বন্দ্ব (@ প্রত্যাবর্তন)
  • এর জন্য প্রয়োজন sudo
  • একটি এনপিএম উপসর্গ সেট আপ করার প্রয়োজন (যদিও আমি যাইহোক এটি ব্যবহার করার পরামর্শ দিই)

অসুবিধা:

  • $(npm bin) উইন্ডোজ কাজ করবে না।
  • আপনার দেব গাছের আরও গভীর সরঞ্জামগুলি npm binফোল্ডারে উপস্থিত হবে না । ( এনটিএম-রান বা এনপিএম- ইনস্টল করুন যা এগুলি সন্ধান করতে পারে))

জেসন উপরে যেমন দেখায়, আপনার "স্ক্রিপ্টগুলি" বিভাগে সাধারণ কাজগুলি (যেমন বিল্ডিং এবং মিনিফাইংয়ের মতো) স্থাপন করা এটির চেয়ে ভাল সমাধান বলে মনে হয় ।package.json


আপনার উপনাম যোগ করুন .bashrcসহজে যোগ করার জন্য bin/আপনার টু ডিরেক্টরির PATHএনভায়রনমেন্ট ভেরিয়েবল: alias nodebin='export PATH=$(npm bin)/:$PATH'। কার্যকর করুন nodebinএবং তারপরে আপনি যথারীতি কেবল আপনার আদেশগুলি টাইপ করতে পারেন।
গীতারিক

আমি জানি না কেন এটি দলের পক্ষে কাজ করবে না। অবশ্যই আপনার এটি সেট আপ করা দরকার, এবং আপনি যদি নিজের পছন্দমত উপন্যাসটি ব্যবহার করতে পছন্দ করেন না। তবে এটি দলে ব্যবহার করতে ক্ষতি করতে পারে না।
গীতারিক

9

এটি কিছুটা পুরানো তবে আমি প্রয়োজনীয়তার দিকে দৌড়লাম তাই এখানে আমি যে সমাধানটি নিয়ে এসেছি তা এখানে।

সমস্যাটি:

আমাদের ডেভলপমেন্ট টিম অনেকগুলি নেট নেট অ্যাপ্লিকেশন পণ্য বজায় রাখে যা আমরা AngularJS / বুটস্ট্র্যাপে স্থানান্তরিত করছি। ভিএস2010 কাস্টম বিল্ড প্রক্রিয়াগুলিতে নিজেকে সহজে leণ দেয় না এবং আমার বিকাশকারীরা নিয়মিতভাবে আমাদের পণ্যগুলির একাধিক প্রকাশের জন্য কাজ করছেন। আমাদের ভিসিএস সাবসার্শন (আমি জানি, আমি জানি। আমি গিটে যাওয়ার চেষ্টা করছি তবে আমার বেঁচে থাকা বিপণন কর্মীরা এতটাই দাবী করছে) এবং একটি একক ভিএস সমাধানে বেশ কয়েকটি পৃথক প্রকল্প অন্তর্ভুক্ত থাকবে। একই নোড প্যাকেজ (গুল্প, বোভার ইত্যাদি) একই মেশিনে কয়েকবার ইনস্টল না করে আমার কর্মীদের তাদের বিকাশের পরিবেশ শুরু করার জন্য একটি সাধারণ পদ্ধতি থাকা দরকার to

টি এল; ডিআর:

  1. একটি নেট নেটওয়ার্কের জন্য স্থানীয়ভাবে প্রয়োজনীয় প্যাকেজগুলির পাশাপাশি গ্লোবাল নোড / বাওয়ার ডেভলপমেন্ট এনভায়রনমেন্ট ইনস্টল করতে "এনপিএম ইনস্টল" দরকার।

  2. ইতোমধ্যে ইনস্টল না করা থাকলে গ্লোবাল প্যাকেজগুলি ইনস্টল করা উচিত।

  3. গ্লোবাল প্যাকেজগুলিতে স্থানীয় লিঙ্কগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে হবে।

সমাধান:

আমাদের কাছে ইতিমধ্যে সমস্ত বিকাশকারী এবং সমস্ত পণ্য ভাগ করে নেওয়ার একটি সাধারণ বিকাশ কাঠামো রয়েছে তাই আমি প্রয়োজনের সময় বিশ্বব্যাপী প্যাকেজগুলি ইনস্টল করার জন্য একটি স্থানীয় নোডজেএস স্ক্রিপ্ট তৈরি করেছি এবং স্থানীয় লিঙ্কগুলি তৈরি করব। স্ক্রিপ্টটি প্রোডাক্ট বেস ফোল্ডারের তুলনায় ".... \ SharedFiles" এ থাকে:

/*******************************************************************************
* $Id: npm-setup.js 12785 2016-01-29 16:34:49Z sthames $
* ==============================================================================
* Parameters: 'links' - Create links in local environment, optional.
* 
* <p>NodeJS script to install common development environment packages in global
* environment. <c>packages</c> object contains list of packages to install.</p>
* 
* <p>Including 'links' creates links in local environment to global packages.</p>
* 
* <p><b>npm ls -g --json</b> command is run to provide the current list of 
* global packages for comparison to required packages. Packages are installed 
* only if not installed. If the package is installed but is not the required 
* package version, the existing package is removed and the required package is 
* installed.</p>.
*
* <p>When provided as a "preinstall" script in a "package.json" file, the "npm
* install" command calls this to verify global dependencies are installed.</p>
*******************************************************************************/
var exec = require('child_process').exec;
var fs   = require('fs');
var path = require('path');

/*---------------------------------------------------------------*/
/* List of packages to install and 'from' value to pass to 'npm  */
/* install'. Value must match the 'from' field in 'npm ls -json' */
/* so this script will recognize a package is already installed. */
/*---------------------------------------------------------------*/
var packages = 
  {
  "bower"                      :                      "bower@1.7.2", 
  "event-stream"               :               "event-stream@3.3.2",
  "gulp"                       :                       "gulp@3.9.0",
  "gulp-angular-templatecache" : "gulp-angular-templatecache@1.8.0",
  "gulp-clean"                 :                 "gulp-clean@0.3.1", 
  "gulp-concat"                :                "gulp-concat@2.6.0",
  "gulp-debug"                 :                 "gulp-debug@2.1.2",
  "gulp-filter"                :                "gulp-filter@3.0.1",
  "gulp-grep-contents"         :         "gulp-grep-contents@0.0.1",
  "gulp-if"                    :                    "gulp-if@2.0.0", 
  "gulp-inject"                :                "gulp-inject@3.0.0", 
  "gulp-minify-css"            :            "gulp-minify-css@1.2.3",
  "gulp-minify-html"           :           "gulp-minify-html@1.0.5",
  "gulp-minify-inline"         :         "gulp-minify-inline@0.1.1",
  "gulp-ng-annotate"           :           "gulp-ng-annotate@1.1.0",
  "gulp-processhtml"           :           "gulp-processhtml@1.1.0",
  "gulp-rev"                   :                   "gulp-rev@6.0.1",
  "gulp-rev-replace"           :           "gulp-rev-replace@0.4.3",
  "gulp-uglify"                :                "gulp-uglify@1.5.1",
  "gulp-useref"                :                "gulp-useref@3.0.4",
  "gulp-util"                  :                  "gulp-util@3.0.7",
  "lazypipe"                   :                   "lazypipe@1.0.1",
  "q"                          :                          "q@1.4.1",
  "through2"                   :                   "through2@2.0.0",

  /*---------------------------------------------------------------*/
  /* fork of 0.2.14 allows passing parameters to main-bower-files. */
  /*---------------------------------------------------------------*/
  "bower-main"                 : "git+https://github.com/Pyo25/bower-main.git" 
  }

/*******************************************************************************
* run */
/**
* Executes <c>cmd</c> in the shell and calls <c>cb</c> on success. Error aborts.
* 
* Note: Error code -4082 is EBUSY error which is sometimes thrown by npm for 
* reasons unknown. Possibly this is due to antivirus program scanning the file 
* but it sometimes happens in cases where an antivirus program does not explain 
* it. The error generally will not happen a second time so this method will call 
* itself to try the command again if the EBUSY error occurs.
* 
* @param  cmd  Command to execute.
* @param  cb   Method to call on success. Text returned from stdout is input.
*******************************************************************************/
var run = function(cmd, cb)
  {
  /*---------------------------------------------*/
  /* Increase the maxBuffer to 10MB for commands */
  /* with a lot of output. This is not necessary */
  /* with spawn but it has other issues.         */
  /*---------------------------------------------*/
  exec(cmd, { maxBuffer: 1000*1024 }, function(err, stdout)
    {
    if      (!err)                   cb(stdout);
    else if (err.code | 0 == -4082) run(cmd, cb);
    else throw err;
    });
  };

/*******************************************************************************
* runCommand */
/**
* Logs the command and calls <c>run</c>.
*******************************************************************************/
var runCommand = function(cmd, cb)
  {
  console.log(cmd);
  run(cmd, cb);
  }

/*******************************************************************************
* Main line
*******************************************************************************/
var doLinks  = (process.argv[2] || "").toLowerCase() == 'links';
var names    = Object.keys(packages);
var name;
var installed;
var links;

/*------------------------------------------*/
/* Get the list of installed packages for   */
/* version comparison and install packages. */
/*------------------------------------------*/
console.log('Configuring global Node environment...')
run('npm ls -g --json', function(stdout)
  {
  installed = JSON.parse(stdout).dependencies || {};
  doWhile();
  });

/*--------------------------------------------*/
/* Start of asynchronous package installation */
/* loop. Do until all packages installed.     */
/*--------------------------------------------*/
var doWhile = function()
  {
  if (name = names.shift())
    doWhile0();
  }

var doWhile0 = function()
  {
  /*----------------------------------------------*/
  /* Installed package specification comes from   */
  /* 'from' field of installed packages. Required */
  /* specification comes from the packages list.  */
  /*----------------------------------------------*/
  var current  = (installed[name] || {}).from;
  var required =   packages[name];

  /*---------------------------------------*/
  /* Install the package if not installed. */
  /*---------------------------------------*/
  if (!current)
    runCommand('npm install -g '+required, doWhile1);

  /*------------------------------------*/
  /* If the installed version does not  */
  /* match, uninstall and then install. */
  /*------------------------------------*/
  else if (current != required)
    {
    delete installed[name];
    runCommand('npm remove -g '+name, function() 
      {
      runCommand('npm remove '+name, doWhile0);
      });
    }

  /*------------------------------------*/
  /* Skip package if already installed. */
  /*------------------------------------*/
  else
    doWhile1();
  };

var doWhile1 = function()
  {
  /*-------------------------------------------------------*/
  /* Create link to global package from local environment. */
  /*-------------------------------------------------------*/
  if (doLinks && !fs.existsSync(path.join('node_modules', name)))
    runCommand('npm link '+name, doWhile);
  else
    doWhile();
  };

এখন আমি যদি আমাদের বিকাশকারীদের জন্য একটি গ্লোবাল সরঞ্জাম আপডেট করতে চাই তবে আমি "প্যাকেজগুলি" অবজেক্টটি আপডেট করে নতুন স্ক্রিপ্টটিতে যাচাই করি। আমার বিকাশকারীরা এটি পরীক্ষা করে দেখেন এবং হয় বৈশ্বিক পরিবেশ আপডেট করার জন্য বিকাশের অধীনে থাকা যে কোনও পণ্য থেকে "নোড এনএমপি-সেটআপ.জেএস" বা "এনপিএম ইনস্টল" দিয়ে এটি চালান। পুরো জিনিসটি 5 মিনিট সময় নেয়।

এছাড়াও, নতুন বিকাশকারীকে পরিবেশ কনফিগার করতে, তাদের অবশ্যই প্রথমে উইন্ডোজের জন্য নোডজেএস এবং জিআইটি ইনস্টল করতে হবে, তাদের কম্পিউটারটি পুনরায় বুট করতে হবে, "ভাগ করা ফাইলগুলি" ফোল্ডার এবং বিকাশের অধীনে থাকা যে কোনও পণ্যগুলি পরীক্ষা করতে হবে এবং কাজ শুরু করতে হবে।

। নেট পণ্যটির জন্য "প্যাকেজ.জসন" ইনস্টল করার আগে এই স্ক্রিপ্টটিকে কল করে:

{ 
"name"                    : "Books",
"description"             : "Node (npm) configuration for Books Database Web Application Tools",
"version"                 : "2.1.1",
"private"                 : true,
"scripts":
  {
  "preinstall"            : "node ../../SharedFiles/npm-setup.js links",
  "postinstall"           : "bower install"
  },
"dependencies": {}
}

মন্তব্য

  • নোট করুন স্ক্রিপ্ট রেফারেন্স এমনকি উইন্ডোজ পরিবেশেও ফরোয়ার্ড স্ল্যাশ প্রয়োজন।

  • "এনপিএম ls" "এনপিএম ইআরআর! বহিঃস্থ:" স্থানীয়ভাবে সংযুক্ত সমস্ত প্যাকেজগুলির জন্য বার্তা দেয় কারণ সেগুলি "প্যাকেজ.জেসন" "নির্ভরতা" তে তালিকাভুক্ত নয়।

1/29/16 সম্পাদনা করুন

npm-setup.jsউপরের আপডেট হওয়া স্ক্রিপ্টটি নিম্নরূপে সংশোধন করা হয়েছে:

  • প্যাকেজ "সংস্করণ" var packagesএখন npm installকমান্ড লাইনে "প্যাকেজ" মানটি পাস হয়েছে । নিবন্ধিত সংগ্রহস্থল ব্যতীত অন্য কোথাও থেকে প্যাকেজ ইনস্টল করার অনুমতি দেওয়ার জন্য এটি পরিবর্তন করা হয়েছিল।

  • যদি প্যাকেজটি ইতিমধ্যে ইনস্টল করা থাকে তবে অনুরোধ করা না হয়, বিদ্যমান প্যাকেজটি সরানো হবে এবং সঠিক ইনস্টল করা হবে।

  • অজানা কারণে, এনপিএম ইনস্টল বা লিঙ্কটি সম্পাদন করার সময় পর্যায়ক্রমে একটি EBUSY ত্রুটি (-4082) নিক্ষেপ করবে। এই ত্রুটিটি আটকা পড়ে এবং কমান্ডটি পুনরায় কার্যকর করা হয়। ত্রুটি খুব কমই দ্বিতীয়বার ঘটে এবং সর্বদা পরিষ্কার হয়ে যায় বলে মনে হয়।


এটি একটি স্টাইমেস 42 লাইফসেভার! কীভাবে এটি করা যায় তা নির্ণয়ের চেষ্টা করার জন্য আমি কয়েক ঘন্টা ধরে ট্রল করছি। পরিষ্কার, বিস্তৃত, সাধারণভাবে দুর্দান্ত। # দফার প্রশ্ন: (ক) প্যাকেজ তালিকায় ইতিমধ্যে পোস্টওয়ার্ডে থাকা বওয়ারটি কেন? (খ) কীভাবে স্থানীয়ভাবে বিশ্বব্যাপী প্যাকেজগুলি লিঙ্ক করবেন না? কমান্ডের মধ্যে "লিঙ্কগুলি" অন্তর্ভুক্ত করবেন না?
ম্যাক্সরকেট

@ ম্যাক্সরকেট: খুশি আমি সহায়তা করতে পারলাম। আমার সর্বশেষতমটি অন্তর্ভুক্ত করতে উত্তরটি আপডেট করেছি যা আরও ভাল কাজ করে। উত্তরসমূহ: (ক) 'বোর ইনস্টল' কমান্ড 'এনপিএম ইনস্টল' এর পরে চালিত হয় তা এখানে দেখানো হয়নি এমন নীতিমালাটি ইনস্টল করতে বওয়ার উপাদানগুলি ইনস্টল করার জন্য করা হয়। আমি চেয়েছিলাম আমার লোকেরা 'এনএমপি ইনস্টল' টাইপ করতে সক্ষম হবে এবং অন্য কমান্ড টাইপ না করে তাদের পরিবেশ পুরোপুরি সেট আপ করা হোক। (খ) হ্যাঁ
sthames42

এই স্ক্রিপ্টের বর্তমান সংস্করণটি এখানে এখানে রক্ষণাবেক্ষণ করা হচ্ছে
sthames42

6

আপনি npm_globals.txtপরিবর্তে পৃথক ফাইল ব্যবহার করতে পারেন package.json। এই ফাইলটিতে প্রতিটি মডিউল এই জাতীয় লাইনে থাকবে

mongoose@1.4.0
node.io@0.3.3
jquery@1.5.1
jsdom@0.2.0
cron@0.1.2

তারপরে কমান্ড লাইনে রান করুন,

< npm_globals.txt xargs npm install -g

তারা সঠিকভাবে ইনস্টল করেছেন তা পরীক্ষা করুন,

npm list -g --depth=0

আপনার এটি করা উচিত বা করা উচিত না হিসাবে , আমি মনে করি এটি সমস্ত ব্যবহারের ক্ষেত্রে নির্ভর করে। বেশিরভাগ প্রকল্পের জন্য, এটি প্রয়োজনীয় নয়; এবং আপনার প্রকল্পের package.jsonএই সরঞ্জামগুলি এবং নির্ভরতা একসাথে থাকা অনেক পছন্দ।

তবে আজকাল আমি দেখতে পাচ্ছি যে আমি create-react-appকোনও নতুন মেশিনে ঝাঁপিয়ে পড়লে আমি সর্বদা বিশ্বব্যাপী ইনস্টল থাকি এবং অন্যান্য সিএলআইয়ের। সংস্করণে খুব বেশি গুরুত্ব না আসলে কোনও গ্লোবাল সরঞ্জাম ইনস্টল করার সহজ উপায় এবং এর নির্ভরতা খুব ভাল।

এবং আজকাল, আমি বিশ্বব্যাপী প্যাকেজ ইনস্টল করার পরিবর্তে npx, একটি এনপিএম প্যাকেজ রানার ব্যবহার করছি ।


3

প্যাকেজ.জসন থেকে সমস্ত মডিউল ./node_modules/ এ ইনস্টল করা আছে

আমি এটি স্পষ্টভাবে বলা হয়নি তবে এটি প্যাকেজ.জসন রেফারেন্স NPM


1

বিশ্ব নির্ভরতা ইনস্টল করতে আপনার নিজস্ব স্ক্রিপ্ট তৈরি করুন। বেশি লাগে না। প্যাকেজ.জসন বেশ প্রসারণযোগ্য।

const {execSync} = require('child_process');

JSON.parse(fs.readFileSync('package.json'))
     .globalDependencies.foreach(
         globaldep => execSync('npm i -g ' + globaldep)
     );

উপরেরটি ব্যবহার করে, আপনি এটি নীচে, ইনলাইনও করতে পারেন!

নীচে প্রিনস্টল দেখুন:

{
  "name": "Project Name",
  "version": "0.1.0",
  "description": "Project Description",
  "main": "app.js",
  "scripts": {
    "preinstall": "node -e \"const {execSync} = require('child_process'); JSON.parse(fs.readFileSync('package.json')).globalDependencies.foreach(globaldep => execSync('npm i -g ' + globaldep));\"",
    "build": "your transpile/compile script",
    "start": "node app.js",
    "test": "./node_modules/.bin/mocha --reporter spec",
    "patch-release": "npm version patch && npm publish && git add . && git commit -m \"auto-commit\" && git push --follow-tags"
  },
  "dependencies": [
  },
  "globalDependencies": [
    "cordova@8.1.2",
    "ionic",
    "potato"
  ],
  "author": "author",
  "license": "MIT",
  "devDependencies": {
    "chai": "^4.2.0",
    "mocha": "^5.2.0"
  },
  "bin": {
    "app": "app.js"
  }
}

নোডের লেখকরা প্যাকেজ স্বীকার করতে পারে না j জসন একটি প্রকল্প ফাইল। তবে তা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.