2017-03-26 1 views
0

Mon package.json a peu de scripts définis de cette manière.Comment propager des arguments de ligne de commande de script npm?

{ 
    "name": "project", 
    "scripts": { 
    "standard": "./node_modules/.bin/standard", 
    "lint": "npm run standard", 
    "lint:fix": "npm run lint -- --fix" 
    } 
} 

Quand j'exécute $ npm run lint:fix je trouve que l'argument --fix ne se propage pas à ./node_modules/.bin/standard. C'est la sortie que je reçois.

 
bash-3.2$ npm run lint:fix 

> [email protected] lint:fix /path/to/my/project 
> npm run lint -- --fix 

> [email protected] lint /path/to/my/project 
> npm run standard "--fix" 

> [email protected] standard /path/to/my/project 
> standard 

standard: Use JavaScript Standard Style (http://standardjs.com) 
standard: Run `standard --fix` to automatically fix some problems. 
    /path/to/my/project/data/someFile.js:38:34: Extra semicolon. 

npm ERR! Darwin 16.0.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "standard" "--fix" 
npm ERR! node v6.9.4 
npm ERR! npm v3.10.10 
npm ERR! code ELIFECYCLE 

Ici il y a une erreur, car l'argument --fix ne propagea pas correctement.

Eh bien, ma question ne concerne pas le linting ou le standardJs. Je voudrais savoir comment propager les arguments correctement jusqu'au script de niveau supérieur.

Répondre

0

Vous ne devriez pas avoir besoin d'un double -- -- dans votre script npm.

Votre script lint:fix devrait être: "npm run lint --fix"

+0

Salut @edwarddamato, je pense que le double '- --' est requis. Coz, le premier ensemble de traits d'union est le séparateur entre la commande de script npm et les arguments (qui doivent être passés au script) tandis que le second ensemble est l'argument lui-même. – Goje87

0

Eh bien, ce que je trouve après avoir beaucoup transpiré sur cette question. (C'est très bête, cependant).

L'erreur a été provoquée non parce que l'argument n'a pas été propagé. Au lieu de cela, c'était parce que le drapeau --fix dans standard ne corrige pas automatiquement les problèmes de point-virgule au cours du filtrage.

Dans l'ensemble de scripts donné (dans la question). L'argument a été propagé avec succès. Par conséquent, c'est le moyen de propager des arguments jusqu'au script de niveau supérieur.