yarn
はnpm
のようにnode-gypフラグをネイティブパッケージに渡さないようです。
たとえば、sqlite3 @ 3.1.6を次のようにインストールしようとすると、
npm install [email protected] \
--build-from-source \
--sqlite_libname=sqlcipher \
--sqlite=`brew --prefix` \
--verbose
sqlite3の--sqlite_libname
に 指定 である--sqlite
とbinding.gyp
を渡すことにより、sqlite3拡張機能を備えたsqlite3が正常にインストールされます。
しかし、yarn
を使用して、同等のコマンドと思われるものを実行しようとすると、フラグが守られていないようです。
yarn add [email protected] \
--force \
--build-from-source \
--sqlite_libname=sqlcipher \
--sqlite=`brew --prefix` \
--verbose
npm
を使用すると、認識されないコマンドライン引数はgypフラグに変換されます。
yarn
では、動作しないようです。
yarn
でこの機能を取得する方法はありますか?
これは現在、npm_config_{snake_case_param}=true/false
という形式の環境変数を使用することで可能です。
たとえば、npm install --build-from-source=true
は次のようになります。
npm_config_build_from_source=true yarn install
ここに記載されています https://yarnpkg.com/lang/en/docs/envvars/#toc-npm-config
Yarnは、インストールコマンドの--
引数をライフサイクルスクリプト(依存関係のpackage.jsonのpre/post/installスクリプト)に自動的に公開しません。以下は、Yarnがスクリプト実行のためにEnvをビルドするコードです https://github.com/yarnpkg/yarn/blob/master/src/util/execute-lifecycle-script.js#L39 。
.yarnrcのenv
設定を介して特定の値を渡すことができ、.yarnrc/.npmrc設定に基づいてnpm_config_*
設定も構築します。