2012-12-13 7 views
10

Ich verwende den scripts Abschnitt in der package.json Datei, um einige Befehle zu speichern, die ich regelmäßig ausführen muss.npm: Ausführen von Skripten aus package.json von irgendwo innerhalb des Projektordners

"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" 
    } 

in jedem Befehl, den ich habe ein ./ am Anfang des Weges kam - das ist, warum ich nur npm run-script rjs aus der Projektstammverzeichnis aufrufen können. gibt es eine Möglichkeit, das Stammverzeichnis des Projekts innerhalb der package.json zu verweisen, so dass ich z. npm test von überall in meinem Projekt?

Antwort

0

überlegt, eine Shell-Datei zu erstellen, die ausgeführt wird?

zum Beispiel einer .sh Datei ausführbar machen (chmod 777 file.sh) erstellen

und dann cd zu Ihrem NodeJS Projektstamm, den npm Befehl ausführen, und dann cd zurück in das Verzeichnis, das Sie gerade verlassen hat ?

Hinzufügen das Skript für Ihre Umgebung ausführbar von überall machen ...

alternativ wird der vollständige Pfad in Ordnung sein hart Codierung? (also anstatt ./ - put/home/user/username/yourproject/phantomjs)

+0

und schließlich eine globale Flagge mit einem Pfad zu Ihrem Projekt einstellen und dann das Flag gesetzt, bevor Sie Ihren npm Befehl ausführen zB Export MY_NODE_JS_PROJECT =/home/user/Benutzername/IhrProjekt und dann in Ihrem Paket .json haben so etwas wie "MY_NODE_JS_PROJECT/test/phantomjs ... –

+0

Ich kann den vollständigen Pfad nicht fest codieren, da die Datei einem git-Repo zugewiesen ist und auch von anderen Personen verwendet wird. Dies ist auch der Fall für das erste, was Sie erklärt haben ... :( – pkyeck

0

Ich habe eine bessere Option gefunden, ein js-Skript anstelle des Shell-Skripts zu erstellen. Es scheint einfacher zu sein, mit npm aus meiner Erfahrung herauszukommen. Sie können dann überprüfen, in welcher Umgebung Sie sich befinden, bevor Sie Befehle ausführen. Wir haben Leute mit sowohl Windows, Macs und Ubuntu und die Überprüfung der Umgebung oder die Verwendung der FS-Paket macht das Leben leichter.

+6

Es wäre schön, wenn Sie ein Beispielskript teilen könnten? Danke. – pkyeck

2

Ich denke, es hängt davon ab, wie Sie Ihr Projekt organisieren.

Ich habe ein Beispielprojekt erstellt, nur um zu demonstrieren. Das ist mein Beispielprojekt Verzeichnisbaum:

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

HINWEIS:./dir1/dir2 sind nur zwei leeren Verzeichnisse für die Demonstration.

Meine package.json Datei sieht wie folgt aus:

{ 
    "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" 
} 

Fokus auf dem Abschnitt Scripts, das sind zwei einfache Linie, ohne Überlegungen über meine Lage.

Wenn ich Verzeichnis /dir1/dir2 ändern und ausführen npm test und das Skript, das ich auf test Eigenschaft geschrieben richtig ohne die Verwendung von ./ ausgeführt (die das aktuelle Verzeichnis definiert ...)

Unterm Strich - ich nehme an Wenn Sie Ihr Projekt neu organisieren und entfernen ./ wird die Arbeit in Ihrem Fall tun.

Verwandte Themen