web-dev-qa-db-ja.com

ノード追加パッケージ--build-from-sourceは、node-gypフラグをパッケージに渡すときに、npm install package --build-from-sourceのように動作しますか?

yarnnpmのようにnode-gypフラグをネイティブパッケージに渡さないようです。

たとえば、sqlite3 @ 3.1.6を次のようにインストールしようとすると、

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

sqlite3の--sqlite_libname指定 である--sqlitebinding.gypを渡すことにより、sqlite3拡張機能を備えたsqlite3が正常にインストールされます。

しかし、yarnを使用して、同等のコマンドと思われるものを実行しようとすると、フラグが守られていないようです。

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

npmを使用すると、認識されないコマンドライン引数はgypフラグに変換されます。

yarnでは、動作しないようです。

yarnでこの機能を取得する方法はありますか?

22
zealoushacker

これは現在、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

4
JCM

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_*設定も構築します。

2
bestander