Является ли пряжа добавить пакет --build-from-source ведет себя как пакет установки npm --build-from-source при передаче флагов node -gyp в пакеты?

Похоже, что yarn не передает флаги node -gyp для собственных пакетов способом npm.

Например, при попытке установить [email protected] с помощью

npm install [email protected] \
  --build-from-source \
  --sqlite_libname=sqlcipher \
  --sqlite=`brew --prefix` \
  --verbose

мы получаем успешную установку sqlite3 с расширениями sqlcipher из-за прохождения --sqlite_libname и --sqlite, которые указаны в sqlite3 binding.gyp.

Но при попытке использовать yarn и запускать то, что я думаю, будет эквивалентной командой, похоже, что флаги не соблюдаются:

yarn add [email protected] \
  --force \
  --build-from-source \
  --sqlite_libname=sqlcipher \
  --sqlite=`brew --prefix` \
  --verbose

С npm непризнанные аргументы командной строки преобразуются в gyp-флаги.

С yarn, который, похоже, не работает.

Есть ли способ получить эту функциональность с помощью yarn?

Ответ 1

Пряжа не раскрывает аргументы -- команды install для сценариев жизненного цикла (pre/post/install scripts в package.json зависимостей). Вот код, где Yarn строит Env для выполнения script https://github.com/yarnpkg/yarn/blob/master/src/util/execute-lifecycle-script.js#L39.

Вы можете передавать определенные значения с помощью параметра env в .yarnrc, а также строит настройки npm_config_* на основе конфигурации .yarnrc/.npmrc.