Düğüm_modüllerine yerel olarak yüklenen bir paketten yürütülebilir dosyalar nasıl kullanılır?


493

İçindeki bir modülün yerel sürümünü nasıl kullanırım node.js. Örneğin, uygulamamda kahve komut dosyası yükledim:

npm install coffee-script

Bu onu içine yerleştirir ./node_modulesve kahve komutu devreye girer ./node_modules/.bin/coffee. Projemin ana klasöründeyken bu komutu çalıştırmanın bir yolu var mı? Sanırım bundle execpaketçi içinde benzer bir şey arıyorum . Temel olarak, projeyle ilgili herkesin kullanması gereken bir kahve komut dosyası sürümü belirtmek istiyorum.

-gKüresel olarak yüklemek için bayrağı ekleyebileceğimi biliyorum, bu yüzden kahve her yerde iyi çalışıyor, ancak proje başına farklı kahve sürümleri istesem ne olur?


9
Okuduğum birçok talimat npm install niftycommandve sonra böyle şeyler söylüyor niftycommand. Ama yolunuzda ./node_modules/.bin yoksa bu asla işe yaramaz, değil mi?
Bennett McElwee

2
Burada çok iyi bir yazı var: firstdoit.com/… - Temel olarak, coffeekomutunuzu daha sonra terminalden npm run build` npm scriptsgibi "build": "coffee -co target/directory source/directoy", so you can run bölüme koymanızı önerir.
Benny Neugebauer

@BennyNeugebauer, PATH ile
uğraşmak

Yanıtlar:


568

GÜNCELLEME : Seyeong Jeong'un aşağıdaki cevabında belirttiği gibi, npm 5.2.0'dan beri kullanabilirsiniz npx [command], bu daha uygundur.

5.2.0 öncesi sürümler için ESKİ CEVAP :

Koymak sorunu

./node_modules/.bin

PATH'nıza yalnızca geçerli çalışma dizininiz proje dizini yapınızın kökü (yani konumu node_modules) kökü olduğunda çalışır.

Çalışma dizininizden bağımsız olarak, yerel olarak yüklenmiş ikili dosyaların yolunu

npm bin

coffeeProje dizini hiyerarşisinde bulunduğunuz yerden bağımsız olarak yerel olarak yüklenmiş bir ikili dosya yürütmek için bu bash yapısını kullanabilirsiniz

PATH=$(npm bin):$PATH coffee

Ben npm-exec için takma

alias npm-exec='PATH=$(npm bin):$PATH'

Şimdi yapabilirim

npm-exec coffee

Nerede olursam olalım kahvenin doğru kopyasını çalıştırmak

$ pwd
/Users/regular/project1

$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee

$ cd lib/
$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee

$ cd ~/project2
$ npm-exec which coffee
/Users/regular/project2/node_modules/.bin/coffee

17
bir adım daha ileri gidebilir vealias coffee="npm-exec coffee"
normal

6
Başka bir projeye cd yaptığınızda çıktı değişir. Bir proje içinde cd yaptığınızda değişmez. npm binnode_modules dizini için 'ata dizinlerinin' zincirini cwd'de arar. Özellikle projenin package.json dosyasında listelenen modüllerin ikili dosyalarını kullanmak istiyorsanız, tam olarak istenen davranış budur.
düzenli

11
Tanrım! modüllerimin çalışması için gerçekten böyle bir şey yapmam gerekir mi? bir takıma açıklamak oldukça pratik değildir! daha basit bir şey yok mu?
Alexian

17
Her zaman önce yerel ikili dosyaları aradıkları için npm komut dosyalarını her zaman kullanabilirsiniz . Orada ikili dosyalarınızın her birine takma adlar oluşturabilir veya yalnızca "derleme" gibi genel adlar kullanabilirsiniz.
Joe Zim

6
@philosodad, aslında hayır, bilmiyorsun. Bu PATH, komut çağrısından önceki haline geri döner. Bir komutu çalıştırmadan önce aynı satırda bir ortam değişkeni ayarlamak yalnızca o komutun ortamını etkiler.
düzenli

410

Güzel örnek

Artık manipüle etmek zorunda değilsiniz $PATH!

Gönderen npm@5.2.0 , npm ile gemilerin npxyerel komutları çalıştırmanızı sağlar paketinnode_modules/.bin veya merkezi önbellekten.

Basitçe çalıştırın:

$ npx [options] <command>[@version] [command-arg]...

Varsayılan olarak, npxkontrol edecek <command>bulunmaktadır $PATHveya yerel proje çiftlerde ve bu yürütün.

Arama npx <command>yaparken <command>sizin önceden bulunmadığından $PATHsizin için otomatik olarak NPM kayıt defterinden bu adı taşıyan bir paket yüklemek ve çalıştırmak irade. Tamamlandığında, kurulu paket küresellerinizde hiçbir yerde olmayacak, bu nedenle uzun vadede kirlilik konusunda endişelenmenize gerek kalmayacak. --no-installSeçenek sağlayarak bu davranışı önleyebilirsiniz .

İçin npm < 5.2.0, npxaşağıdaki komutu çalıştırarak paketi manuel olarak yükleyebilirsiniz :

$ npm install -g npx

1
Üçüncü taraf global npm paketlerini yüklemeyi sevmiyorum npmve package.jsonneredeyse aynı işlevi sağlıyor.
guneysus

"Yol bir dize olmalıdır. Alınan tanımsız" mesajı görünürse, bir düzeltme şöyledir
Valeriy Katkov

1
Bu cevap iyi. Ama sadece npxtopal olduğunu söylemek istiyorum . Öyle npm runya npm execda böyle bir şey olmalıydı .
William Entriken

@WilliamEntriken Bazı nedenlerden dolayı, npm run [my-local-package]bir Windows cihazında çalışıyor gibi görünse de Ubuntu'mda çalışmıyor.
Clockwork

97

npm binProjenizin düğüm modüllerini / bin dizinini almak için komutu kullanın

$ $(npm bin)/<binary-name> [args]

Örneğin

$ $(npm bin)/bower install

4
Bu basit ve genel çözümü seviyorum. Bir takma adın gereksiz görünmesini sağlar.
Matt Montag

Zarif ve yapmaktan daha güvenli bir sonraki en iyi çözüm gibi görünüyorexport PATH="./node_modules/.bin:$PATH"
jontsai

1
@ inf3rno komut $(npm bin)/jasmine, değil node $(npm bin)/jasmine(muhtemelen anladınız ama diğerleri için açıklığa kavuştunuz).
jassa

5
Kötü bir çözüm değil, ancak $ ile standart bir windows komut satırında çalışmaz. Package.json komut dosyaları bölümüne koymak, daha uyumlu olduğu için daha iyi bir yaklaşımdır.
Timothy Gonzalez

77

kullanım npm run[-script] <script name>

Bin paketini yerel ./node_modulesdizininize yüklemek için npm kullandıktan sonra , aşağıdaki gibi package.jsoneklemek için değiştirin <script name>:

$ npm install --save learnyounode
$ edit packages.json
>>> in packages.json
...
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "learnyounode": "learnyounode"
},
...
$ npm run learnyounode

Npm install bir - add-script seçeneği ya da bir şey olsaydı ya da npm run komut dosyası bloğuna eklemeden çalışırsa iyi olurdu.


5
Bir projede birden fazla geliştiriciyle uğraşırken bu yaklaşımın daha tekdüze olduğunu gördüm - yerel olarak herhangi bir şey yapılandırma gereğini ortadan kaldırır ... ancak npm installo zaman dev bağımlılıklarınıza erişebilirsiniz. Sadece küçük aşağı tarafı npm run eslint(ya da ne olursa olsun) gerekir. Gulp çalıştıran "start" adında bir komut dosyası oluşturabilirsiniz, böylece yalnızca npm startdev sunucunuzu başlatmak için yazmanız gerekir . Oldukça havalı şeyler ve bash iyiliği yok, bu yüzden windows arkadaşlarınız hala sizin gibi. :)
jpoveda

1
yolunuza $ (npm bin) koymak için bir takma ad eklemek akıllıdır, ancak bunun yerel yapılandırması olmayan kişiler için çalışacağı gerçeği kalbimi kazanır
Conrad.Dean

12
bu daha fazla oy gerektirir! Komut dosyalarınızı aşağıdaki --gibi komut dosyalarınıza npm run learnyounode -- --normal-switches --watch -d *.js
iletin

Bunu da en iyi çözüm olarak görüyorum. Burada ayrıntılı bir açıklama var: lostechies.com/derickbailey/2012/04/24/…
adampasz

1
Genellikle bunun için çalışıyorum, ancak bazı nedenlerden dolayı bir Ubuntu cihazında npm run ts-nodebenim için çalışmıyor. Sadece npx'e yeniden bakmam gerekecek.
Clockwork

42

Kullanın npm-run.

Benioku dosyasından:

npm işletilen

Düğüm_modüllerinden yerel yürütülebilir dosyaları bulun ve çalıştırın

Bir npm yaşam döngüsü betiği tarafından kullanılabilen tüm yürütülebilir dosyalar kullanılabilir npm-run.

kullanım

$ npm install mocha # mocha installed in ./node_modules
$ npm-run mocha test/* # uses locally installed mocha executable 

Kurulum

$ npm install -g npm-run

8
Artık değil, yukarıda belirtilen npx'e bakın ... stackoverflow.com/a/45164863/3246805
tj

41

Güncelleme: Bu yöntemi, hem belirtilen güvenlik nedenlerinden ötürü hem de en az yeni npm binkomut için önermiyorum . Aşağıdaki orijinal cevap:

Bildiğiniz gibi, yerel olarak kurulmuş tüm ikili dosyalar ./node_modules/.bin. Global olarak mevcut ikili dosyalar yerine bu dizinde her zaman ikili dosyaları çalıştırmak için, varsa, ./node_modules/.binönce yolunuza koymanızı öneririm :

export PATH="./node_modules/.bin:$PATH"

Eğer bunu içine koyarsanız ~/.profile, coffeeher zaman ./node_modules/.bin/coffeemevcut olacaktır, aksi takdirde /usr/local/bin/coffee(veya altında düğüm modüllerini taktığınız herhangi bir önek).


1
bu muhtemelen en iyi çözümdür. Ayrıca benim ./node_modules/.bin/coffee --output lib/ --compile --bare --watch src
projemde

72
Tehlike, Will Robinson! $ PATH'nızda göreli yolların kullanılması, özellikle ilk öğe olarak ön tarafa koyarsanız, gezegenin büyüklüğünde bir güvenlik deliği açar. Eğer konum dizin herkes tarafından yazılabilir ise (bir yerde söylemek /tmp, herhangi bir işlem veya kullanıcı sıradan komutların zararlı versiyonlarını (gibi koyarak oturumunu yönlendirebilirsiniz) ls, cpvs.) vardır. Bunlar, şifrelerinizi vb. Yakalayan 'görünmez' alt kabuklar oluşturabilir.
ack

sadece kökte çalışacak ve başka hiçbir yerde çalışamayacak. bu alias npm-exec='PATH=$(npm bin):$PATH'daha slicker.
oligofren

1
Eğer sizin için ilk şey olarak PATHdeğil, son olarak ( $(npm bin)formu kullanarak ) koyarsanız bu ne kadar kötü ? bu nedenle mevcut öğelerinizin üzerine yazamazlar ve var olandan npm binbağımsız olarak dizindeki yürütülebilir dosyalara güveniyor olabilirsiniz PATH; tehdit modeli, a) kötü niyetli birisinin dosya sisteminize erişmesini, b) bu ​​sistem araçlarına yakın adlara sahip yürütülebilir dosyalar eklemesini ve c) yanlış yazmanızı sağlar mı? npmYüklü programları kullanırken zaten yabancı yürütülebilir dosyalara güvendiğiniz göz önüne alındığında, bu durumu kötüleştiren senaryoları anlamaya çalışmak .
osdiab

Bir takma adla kabuk hileleri yapabilir ve manuel olarak yollayabilirsiniz ve bu "çalışır" ama oldukça ideal değildir.
killscreen

22

PATH çözümü, $ (npm bin) .profile / .bashrc / etc dosyasına yerleştirilirse bir kez değerlendirilir ve sonsuza kadar yolun ilk değerlendirildiği dizine ayarlanır. Geçerli yolu değiştirirseniz betiği her çalıştırdığınızda yolunuz büyür.

Bu sorunları aşmak için bir işlev oluşturdum ve kullandım. Ortamınızı değiştirmez ve kullanımı kolaydır:

function npm-exec {
   $(npm bin)/$@  
}

Bu, ortamınızda herhangi bir değişiklik yapmadan şu şekilde kullanılabilir:

npm-exec r.js <args>

2
Bunu severim! Ben sadece fonksiyonumu adlandırdımn
jontsai

Bu harika! Paylaşım için teşekkürler. Aşağıya bir balık kabuğu versiyonu ekledim.
LeOn - Han Li

22

Eğer npm tutmak istiyorsanız, npx ihtiyacınız olanı yapmalıdır.


İpliğe geçiş yapmak (facebook ile npm değiştirme) sizin için bir seçenekse, arayabilirsiniz:

 yarn yourCmd

package.json içindeki komut dosyaları öncelik kazanır, hiçbiri bulunmazsa ./node_modules/.bin/klasörün içine bakar .

Ayrıca ne çalıştırdığını çıktılar:

$ yarn tsc
yarn tsc v0.27.5
$ "/home/philipp/rate-pipeline/node_modules/.bin/tsc"

Bu nedenle, bilgisayarınızdaki her komut için komut dosyaları ayarlamanız gerekmez package.json.


.scriptsİçinde tanımlanmış bir komut dosyanız varsa package.json:

"tsc": "tsc" // each command defined in the scripts will be executed from `./node_modules/.bin/` first

yarn tscşuna eşit yarn run tscveya npm run tsc:

 yarn tsc
 yarn tsc v0.27.5
 $ tsc

14

güncelleme: Son npm'de iseniz (sürüm> 5.2)

Kullanabilirsiniz:

npx <command>

npx.bindizininizdeki komutu ararnode_modules

eski cevap:

Pencereler için

Aşağıdakileri adlı bir dosyada npm-exec.batsaklayın ve%PATH%

@echo off
set cmd="npm bin"
FOR /F "tokens=*" %%i IN (' %cmd% ') DO SET modules=%%i
"%modules%"\%*

kullanım

Sonra kullanabilirsiniz npm-exec <command> <arg0> <arg1> ...

Örneğin

wdioYüklü yerel node_modules dizininde yürütmek için şunları yapın:

npm-exec wdio wdio.conf.js

yani koşacak .\node_modules\.bin\wdio wdio.conf.js


1'den fazla argüman geçerken bu işe yaramaz. Örn: npm-exec gulp <some_task>
OK999

@ OK9999 Eminim bazı küçük değişiklikler argümanların geçmesine izin verecektir (çünkü buradan geçirdiğinizde "" içinde alıntılanmıştır); Ne önermek kopya gulp dosyasını bin kökünden proje köküne yapıştırın (dosyanın bazı değişiklikler gerekli, ancak sadece yeni kod yazmadan çalışacaktır vb)
Dheeraj Bhaskar

Evet, sonunda buldum. Node_modules klasörü, yudum dosyasının bulunduğu klasörde olmalıdır
OK999

6

Kabuk takma adlarına veya başka bir pakete güvenmemeyi tercih ederim.

scriptsBölümünüze basit bir satır ekleyerek package.json, yerel npm komutlarını aşağıdaki gibi çalıştırabilirsiniz:

npm run webpack

package.json

{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "webpack": "webpack"
  },
  "devDependencies": {
    "webpack": "^4.1.1",
    "webpack-cli": "^2.0.11"
  }
}

5

PATH değişkeninizin geçerli çalışma dizininize göre doğru şekilde güncellenmesini istiyorsanız, bunu .bashrc-değerinizin (veya tanımlayan herhangi bir şeyin PATH) sonuna ekleyin :

__OLD_PATH=$PATH
function updatePATHForNPM() {
  export PATH=$(npm bin):$__OLD_PATH
}

function node-mode() {
  PROMPT_COMMAND=updatePATHForNPM
}

function node-mode-off() {
  unset PROMPT_COMMAND
  PATH=$__OLD_PATH
}

# Uncomment to enable node-mode by default:
# node-mode

Bu, bash istemi her oluşturulduğunda kısa bir gecikme ekleyebilir (büyük olasılıkla projenizin boyutuna bağlı olarak), bu nedenle varsayılan olarak devre dışıdır.

Sırasıyla node-modeve node-mode-offöğelerini çalıştırarak terminalinizde etkinleştirebilir ve devre dışı bırakabilirsiniz .


4

Her zaman @guneysus ile aynı yaklaşımı kullandım, bu problemi çözmek için.

Ancak, son aylarda npx kullanıyorum ve onu seviyorum.

Örneğin, bir Açısal proje indirdim ve Açısal CLI'yı global olarak kurmak istemedim. Yani, npx yüklüyse, (eğer yüklediysem) global açısal cli komutunu kullanmak yerine:

ng serve

Bunu konsoldan yapabilirim:

npx ng serve

İşte NPX hakkında yazdığım bir makale ve bu daha derinlere gidiyor.


2

zxc , nodejs için "bundle exec" gibidir. Kullanmaya benzer PATH=$(npm bin):$PATH:

$ npm install -g zxc
$ npm install gulp
$ zxc which gulp
/home/nathan/code/project1/node_modules/.bin/gulp

2

Aynı @regular'ın kabul ettiği çözüm, ancak Balık kabuğu aroması

if not contains (npm bin) $PATH
    set PATH (npm bin) $PATH
end

1

Ayrıca direnv komutunu kullanabilir ve $ PATH değişkenini yalnızca çalışma klasörünüzde değiştirebilirsiniz.

$ cat .envrc
> export PATH=$(npm bin):$PATH

1

Bu betiği bilgisayarınıza ekleyin .bashrc. Ardından coffeeyerel olarak arayabilir veya herhangi bir şeyi arayabilirsiniz . Bu, dizüstü bilgisayarınız için kullanışlıdır, ancak sunucunuzda kullanmayın.

DEFAULT_PATH=$PATH;

add_local_node_modules_to_path(){
  NODE_MODULES='./node_modules/.bin';
  if [ -d $NODE_MODULES ]; then
    PATH=$DEFAULT_PATH:$NODE_MODULES;
  else
    PATH=$DEFAULT_PATH;
  fi
}

cd () {
  builtin cd "$@";
  add_local_node_modules_to_path;
}

add_local_node_modules_to_path;

Not : Bu komut bir aliase yapar cdkomuta ve her çağrıdan sonra cdo çek node_modules/.binve Blogunuza ekleyin $PATH.

note2 : üçüncü satırı olarak değiştirebilirsiniz NODE_MODULES=$(npm bin);. Ama bu cdemirleri çok yavaşlatır.


1
$(npm bin)Sabit kodlama yerine kullanın ./node_modules/.bin.
bfontaine

Hmm, $(npm bin)her cdkomutla kullanmak için çok yavaş görünüyor . Ben kodu geri yükledim ve bunun için bir not ekledim.
Tsutomu Kawamura

1

Windows için bunu kullanın:

/* cmd into "node_modules" folder */
"%CD%\.bin\grunt" --version

0

Aynı sorunla karşılaştı ve özellikle diğer adları kullanarak sevmiyorum (aynı düzenli , 'önerdi s) ve onlar gibi yapmazsanız çok zaman burada kullandığım, önce küçük bir yürütülebilir bash komut dosyası oluşturmak zorunda başka çözüm var demek setenv.sh :

#!/bin/sh

# Add your local node_modules bin to the path
export PATH="$(npm bin):$PATH"

# execute the rest of the command
exec "$@"

ve sonra /binbu komutu kullanarak yerelinizdeki tüm yürütülebilir dosyaları kullanabilirsiniz :

./setenv.sh <command>
./setenv.sh 6to5-node server.js
./setenv.sh grunt

scriptsPackage.json içinde kullanıyorsanız :

...,
scripts: {
    'start': './setenv.sh <command>'
}

2
bu setenv betiği package.json betikleri için gerekli değildir. npm, {scripts} komutunu çalıştırdığınızda yerel node_modules / .bin dizinini sizin için yola önceden ekler.
jasonkarns

0

Bunun güvensiz / kötü bir fikir olup olmadığını bilmek isterim, ancak biraz düşündükten sonra burada bir sorun görmüyorum:

Linus'un güvensiz çözümünü değiştirme kullanarak, sonuna eklemek için npm bindizini bulmak ve komut dosyası sadece çağrı yapma npm binbir zaman package.jsonbir ebeveyn (hız için) mevcuttur, bu şimdiye için geldi ne zsh:

find-up () {
  path=$(pwd)
  while [[ "$path" != "" && ! -e "$path/$1" ]]; do
    path=${path%/*}
  done
  echo "$path"
}

precmd() {
  if [ "$(find-up package.json)" != "" ]; then
    new_bin=$(npm bin)
    if [ "$NODE_MODULES_PATH" != "$new_bin" ]; then
      export PATH=${PATH%:$NODE_MODULES_PATH}:$new_bin
      export NODE_MODULES_PATH=$new_bin
    fi
  else
    if [ "$NODE_MODULES_PATH" != "" ]; then
      export PATH=${PATH%:$NODE_MODULES_PATH}
      export NODE_MODULES_PATH=""
    fi
  fi
}

İçin bashkullanmak yerine, precmdkanca, kullanabilirsiniz $PROMPT_COMMAND(ben bunu test edemedim ama fikir olsun) değişkeni:

__add-node-to-path() {
  if [ "$(find-up package.json)" != "" ]; then
    new_bin=$(npm bin)
    if [ "$NODE_MODULES_PATH" != "$new_bin" ]; then
      export PATH=${PATH%:$NODE_MODULES_PATH}:$new_bin
      export NODE_MODULES_PATH=$new_bin
    fi
  else
    if [ "$NODE_MODULES_PATH" != "" ]; then
      export PATH=${PATH%:$NODE_MODULES_PATH}
      export NODE_MODULES_PATH=""
    fi
  fi   
}

export PROMPT_COMMAND="__add-node-to-path"

npm binSonuna eklemek , $PATHkullanıcının beklediğini yürütmeyebilir: temelde başka bir yürütülebilir dosya, ancak büyük olasılıkla başka bir sürümle küresel olarak yüklenmiş bir paket!
LoganMzz

0

Ben bir Windowskullanıcıyım ve bu benim için çalıştı:

// First set some variable - i.e. replace is with "xo"
D:\project\root> set xo="./node_modules/.bin/"

// Next, work with it
D:\project\root> %xo%/bower install

İyi şanslar.


0

Güvenlik nedeniyle kullanıyorsanız fish shellve eklemek istemiyorsanız $path. Yerel düğüm yürütülebilir dosyalarını çalıştırmak için aşağıdaki işlevi ekleyebiliriz.

### run executables in node_module/.bin directory
function n 
  set -l npmbin (npm bin)   
  set -l argvCount (count $argv)
  switch $argvCount
    case 0
      echo please specify the local node executable as 1st argument
    case 1
      # for one argument, we can eval directly 
      eval $npmbin/$argv
    case '*'
      set --local executable $argv[1]
      # for 2 or more arguments we cannot append directly after the $npmbin/ since the fish will apply each array element after the the start string: $npmbin/arg1 $npmbin/arg2... 
      # This is just how fish interoperate array. 
      set --erase argv[1]
      eval $npmbin/$executable $argv 
  end
end

Şimdi şöyle bir şey çalıştırabilirsiniz:

n coffee

veya daha fazla argüman:

n browser-sync --version

Eğer Not bashkullanıcı, daha sonra Bob9630 cevapları @ bash en yararlanarak gitmek yoludur $@, mevcut olmadığı fishshell.


-9

Kahve-betiği package.json dosyasına her projede gereken belirli bir sürümle ekleyin, genellikle şöyle:

"dependencies":{
  "coffee-script": ">= 1.2.0"

Ardından, her projeye bağımlılıkları yüklemek için npm install komutunu çalıştırın. Bu, her bir proje için yerel olarak erişilebilecek belirtilen kahve komut dosyasının sürümünü yükleyecektir.


evet, sorumda belirttiğim kadarını aldım. özellikle projemdeki ./node_modules/.bin/coffee dışındakini nasıl arayabilirim?
typeoneerror 13:12

Npm install dosyasını projenizin ana klasöründe package.json ile çalıştırdıysanız, bu klasörde bir ./node_modules/.bin/coffee klasörünüz olmalıdır. ./Node_modules/coffee-script/bin/coffee kullanıldığında kahvenin yerel sürümü çalıştırılırken, yalnızca kahve çalıştırıldığında genel kurulum çalıştırılır. Bu proje klasörü içindeki başka bir yola başka bir kahve sürümü yüklüyse, ./path/to/this/installation/coffee öğesini kullanarak ona erişebilirsiniz.
almypal

Bu benim için işe yaramadı. "Svgo" kullanmaya çalışıyorum ve sadece küresel olarak yüklendiğinde çalışır. Ben denedim npm install svgoyanı sıra npm installpackage.json ile. Her iki yöntem de "başarıyla" yüklendi, ancak "svgo" komutu hala kullanılamıyor.
Ryan Wheale

1
Grunt bunu akıllıca kullanır ve IMHO da diğer paketleri kullanmalıdır. İlk olarak grunt-clipaketi global olarak yüklersiniz, daha sonra proje dizininize paketin herhangi bir (değiştirilmiş) sürümünü yükler grunt, daha sonra çalıştırdığınızda gruntbu yerel sürümü kullanır.
ack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.