2014-01-25 2 views
5

Я пытаюсь создать две отдельные команды npm для запуска локального проекта NodeJS на машине dev и в режиме производства. Я хочу иметь возможность передавать аргументы машине отдельно для обслуживания правильных зависимостей, которые могут быть CDN в производстве или на моей локальной машине.Использование команд npm для запуска проекта NodeJS с аргументами

Вот что я ищу, чтобы иметь в package.json

"run": "node ./server/app.js", /* for running locally*/ 

"start": "node ./server/app.js", /* for running in production*/ 

Если я пытаюсь вызвать НПМ бег - он создает эту ошибку:

npm ERR! npm run-script [<pkg>] <command> 
npm ERR! not ok code 0 

Я также хочу, чтобы иметь возможность отправить аргументы командной строки, которые будут содержать URL-адрес.

ответ

5

Вы не делаете это правильно.

Для вызова пользовательских сценариев, вы должны запустить

npm run-script run 

Ваш package.json должен иметь:

"scripts": { 
    "start": "node ./server/app.js", 
    "run": "node ./server/app.js" 
} 

См: https://npmjs.org/doc/cli/npm-run-script.html

0

Вы можете использовать этот Баш скрипт для запуска любой (даже вложенный) модуль напрямую с аргументами. Не забудьте изменить ~/Develop/node_modules на свой локальный путь.

#!/bin/bash 
if [ $# -eq 0 ]; then 
    echo Usage: npmrun module [args] 
    exit 
fi 
data=~/bin/npmrun.data 
if [ -f $data ]; then source $data 
else declare -A where 
fi 
cd ~/Develop/node_modules 
if [ -z ${where[$1]} ]; then 
    path=$(find -path '*/bin/'$1) 
    if [ -z $path ]; then 
     echo "Module \"$1\" not founded!" 
     exit 
    else 
     where[$1]=$path; 
     declare -p where > $data 
    fi 
fi 
${where[$1]} ${@:2} 
Смежные вопросы