Npm: запускать скрипты из package.json из любой папки внутри проекта
Я использую раздел scripts
внутри файла package.json для хранения некоторых команд, которые я должен запускать регулярно.
"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"
}
в каждой команде у меня есть ./
в начале пути - вот почему я могу вызвать только npm run-script rjs
из корневого каталога проекта.
есть ли способ ссылаться на корневой каталог проекта внутри package.json, чтобы я мог запускать, например. npm test
из любого места в моем проекте?
Ответы
Ответ 1
Я думаю, это зависит от того, как вы организуете свой проект.
Я создал образец проекта только для демонстрации. Это мое примерное дерево каталогов проектов:
.
├── dir1
│ └── dir2
├── package.json
├── src
│ └── index.js
└── test
└── test.js
ПРИМЕЧАНИЕ. ./dir1/dir2
- это всего лишь два пустых каталога для демонстрации.
Мой package.json
файл выглядит следующим образом:
{
"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"
}
Сосредоточьтесь на разделе сценариев, это две простые строки, без соображений относительно моего местоположения.
Если я сменил каталог на /dir1/dir2
и выполнил npm test
, а script, я написал в test
, свойство выполнено правильно, не используя ./
(который определяет текущий каталог...)
Нижняя строка. Я предполагаю, что если вы повторно организуете свой проект и удалите ./
, то выполнит эту работу в вашем случае.
Ответ 2
рассмотрел создание файла оболочки, который работает?
например, создать файл .sh, сделать его исполняемым (chmod 777 file.sh)
а затем cd к корню проекта nodejs, запустите команду npm, а затем cd вернитесь в только что оставшийся каталог?
добавление script в вашу среду сделает его исполняемым из любого места...
альтернативно будет жестко кодировать полный путь в порядке? (так что вместо использования. /- put/home/user/username/yourproject/phantomjs)
Ответ 3
Я нашел лучший вариант - создать js script вместо оболочки script. Мне кажется, что мне легче общаться с npm из моего опыта. вы можете проверить, в какой среде вы находитесь, перед запуском команд. У нас есть люди с обоими окнами, маками и ubuntu, а также проверка среды или использование пакета fs облегчают жизнь.