2012-12-13 2 views
10

J'utilise la section scripts dans le fichier package.json pour stocker certaines commandes que je dois exécuter régulièrement.npm: exécuter des scripts à partir de package.json depuis n'importe où dans le dossier du projet

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

dans chaque commande que j'ai un ./ au début du chemin - c'est pourquoi je ne peux appeler npm run-script rjs à partir du répertoire racine du projet. existe-t-il un moyen de référencer le répertoire racine du projet à l'intérieur de package.json afin que je puisse exécuter par ex. npm test de n'importe où dans mon projet?

Répondre

0

considéré comme créant un fichier shell qui s'exécute?

par exemple créer un fichier .sh rendre exécutable (chmod 777 file.sh)

puis cd à votre nodejs racine du projet, exécutez la commande NPM, puis cd de nouveau dans le répertoire que vous venez de quitter ?

ajouter le script à votre environnement, il sera exécutable à partir n'importe où ...

alternative sera de coder en dur le chemin complet soit ok? (donc plutôt que d'utiliser ./ - put/home/user/nom d'utilisateur/yourproject/phantomjs)

+0

et enfin la fixation d'un indicateur global avec un chemin à votre projet, puis mettre le drapeau avant d'exécuter votre commande NPM par exemple export MY_NODE_JS_PROJECT =/home/user/nom d'utilisateur/YourProject puis dans votre forfait .json a quelque chose comme "MY_NODE_JS_PROJECT/test/phantomjs ... –

+0

Je ne peux pas coder en dur le chemin d'accès complet, car le fichier est validé par un git repo et utilisé par d'autres personnes. C'est aussi le cas pour la première chose que vous avez expliqué ... :( – pkyeck

0

J'ai trouvé une meilleure option est de créer un script js au lieu du script shell. Il semble être plus facile de faire face à npm de mon expérience. Vous pouvez ensuite vérifier dans quel environnement vous vous trouvez avant d'exécuter des commandes. Nous avons des gens avec des fenêtres, des macs et des ubuntu et la vérification de l'environnement ou l'utilisation du paquet fs rend la vie plus facile.

+6

Ce serait bien si vous pouviez partager un exemple de script? – pkyeck

2

Je pense que cela dépend de la façon dont vous organisez votre projet. J'ai créé un projet exemple juste pour démontrer. Ceci est mon exemple arborescence du projet:

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

REMARQUE:./dir1/dir2 ne sont que deux répertoires vides pour la démonstration.

Mon fichier package.json ressemble à ceci:

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

Mise au point sur la section scripts, ce sont deux lignes simples, sans considérations sur mon emplacement.

Si je change répertoire pour /dir1/dir2 et exécuter npm test et le script que j'ai écrit sur test propriété est exécuté correctement sans l'utilisation de ./ (qui définit le répertoire courant ...)

Bottom line - Je suppose que Si vous réorganisez votre projet et supprimez ./ fera le travail dans votre cas.

Questions connexes