2012-12-13 12 views
10

Używam sekcji scripts w pliku package.json do przechowywania niektórych poleceń, które muszę regularnie uruchamiać.npm: uruchamiaj skrypty z pakietu package.json z dowolnego miejsca w folderze projektu

"scripts": { 
    "test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html", 
    "rjs": "r.js -o ./js/app.build.js", 
    "less": "lessc -x ./css/app.less > ./css/app.css" 
    } 

w każdej komendzie I got a ./ na początku drogi - dlatego mogę tylko zadzwonić npm run-script rjs z katalogu głównego projektu. jest sposób odwoływania się do katalogu głównego projektu wewnątrz pliku package.json, aby można było uruchomić np. npm test z dowolnego miejsca w moim projekcie?

Odpowiedz

0

rozważyć utworzenie pliku powłoki, który działa?

na przykład utworzyć plik .Sh sprawiają, że wykonywalny (chmod 777 file.sh)

a następnie płyty CD do katalogu głównego projektu nodejs, uruchom polecenie npm, a następnie cd z powrotem do katalogu, który właśnie opuścił ?

dodając skrypt do środowiska uczyni go wykonywalnym z dowolnego miejsca ...

alternatywnie będzie ciężko kodowania pełna ścieżka być ok? (więc zamiast używać ./ - put/home/user/username/yourproject/phantomjs)

+0

i wreszcie ustawienie globalną flagę ze ścieżką do projektu, a następnie ustawiając flagę przed uruchomić komendę npm np eksport MY_NODE_JS_PROJECT =/home/user/login/yourproject a następnie w pakiecie .json ma coś w stylu "MY_NODE_JS_PROJECT/test/phantomjs ... –

+0

Nie mogę zakodować na stałe ścieżki, ponieważ plik jest zatwierdzony do repozytorium git i jest używany również przez inne osoby. tak też jest z pierwszą rzeczą, którą wyjaśniłeś ... :( – pkyeck

0

Znalazłem lepszą opcją jest stworzenie skryptu js zamiast skryptu powłoki. Łatwiej sobie poradzić z npm z mojego doświadczenia. możesz następnie sprawdzić, w jakim jesteś otoczeniu, zanim uruchomisz polecenia. Mamy ludzi z Windows, Mac OS i Ubuntu i sprawdzanie środowiska lub korzystanie z pakietu fs ułatwia życie.

+6

Byłoby miło, gdybyś mógł udostępnić przykładowy skrypt? Dzięki. – pkyeck

2

Myślę, że to zależy od sposobu organizacji projektu.

Stworzyłem przykładowy projekt tylko po to, aby zademonstrować. To moja próba drzewo katalogów projektu:

. 
├── dir1 
│   └── dir2 
├── package.json 
├── src 
│   └── index.js 
└── test 
    └── test.js 

UWAGA:./dir1/dir2 są tylko dwa puste katalogi dla demonstracji.

Mój plik package.json wygląda następująco:

{ 
    "name": "sample", 
    "version": "1.0.0", 
    "description": "sample", 
    "main": "index.js", 
    "scripts": { 
    "test": "node test/test.js", 
    "start": "node src/index.js" 
    }, 
    "author": "yaniv", 
    "license": "ISC" 
} 

uwzględnieniem odcinka skryptów, to są dwa prosta linia, bez rozważania o mojej lokalizacji.

Jeśli zmienić katalog do /dir1/dir2 i wykonać npm test i skrypt pisałem na test nieruchomości jest wykonywana prawidłowo bez użycia ./ (która określa bieżący katalog ...)

Konkluzja - Przypuszczam jeśli ponownie zorganizujesz swój projekt i usuniesz ./, wykonasz pracę w twoim przypadku.

Powiązane problemy