Как найти исходный каталог при запуске родительского скрипта npm из подкаталога? - PullRequest
2 голосов
/ 23 июня 2019

У меня довольно стандартная структура веб-приложения, которая использует npm для выполнения некоторых тестовых сценариев node.js.Кроме того, npm позволяет выполнять сценарии родительского пакета из подкаталога.

В качестве примера:

|-- my-app
|   |-- package.json
|   |-- test-script.js
|   |-- component-one
|   |   |-- test-one.spec.js
|   |-- component-two
|   |   |-- test-two.spec.js

> /my-app/component-one: npm run test
# Runs test-script.js as specified in root package's scripts

Я бы хотел определить исходную подпапку, в которой я запускаюсценарии от.Тем не менее, я не смог найти способ доступа к этому каталогу.И process.cwd(), и __dirname возвращают местоположение каталога родительского уровня скрипта ( my-app в примере).

Мой основной сценарий использования - фильтровать тесты толькозапускать их в текущем подкаталоге, поэтому добавление отдельных сценариев для каждого подкаталога нецелесообразно.

1 Ответ

0 голосов
/ 23 июня 2019

Из npm документов:

Сценарии запускаются из корня модуля, независимо от того, какой у вас текущий рабочий каталог, когда вы вызываете npm run.Если вы хотите, чтобы ваш скрипт использовал другое поведение в зависимости от того, в каком подкаталоге вы находитесь, вы можете использовать переменную окружения INIT_CWD, которая содержит полный путь, который вы использовали, когда запускали npm run.

Документы из запроса извлечения :

npm run добавляет текущий рабочий каталог к ​​INIT_CWD.Вы можете запускать скрипты в подкаталоге проекта.Например, вы хотите запустить babel в определенном подкаталоге.Вы должны написать:

"scripts": {
  "build": "babel $INIT_CWD/src -d $INIT_CWD/lib"
}

или вы можете написать:

"scripts": {
  "build": "cd $INIT_CWD && babel src -d lib"
}

Теперь вы можете запустить скрипт npm run build в любом подкаталоге, который вы хотите скомпилировать JavaScript.В вашем случае вам может понадобиться передать cwd в качестве аргумента скрипту и переопределить INIT_CWD var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...