Il semble que yarn
ne passe pas les drapeaux node-gyp aux packages natifs comme le fait npm
.
Par exemple, lorsque vous essayez d'installer [email protected] avec:
npm install [email protected] \
--build-from-source \
--sqlite_libname=sqlcipher \
--sqlite=`brew --prefix` \
--verbose
nous obtenons une installation réussie de sqlite3 avec des extensions sqlcipher, en raison du passage de --sqlite_libname
et --sqlite
, qui sont spécifié dans binding.gyp
de sqlite3.
Mais, lorsque vous essayez d'utiliser yarn
et que vous exécutez ce que je pense être la commande équivalente, il semble que les indicateurs ne soient pas respectés:
yarn add [email protected] \
--force \
--build-from-source \
--sqlite_libname=sqlcipher \
--sqlite=`brew --prefix` \
--verbose
Avec npm
les arguments de ligne de commande non reconnus sont convertis en drapeaux gyp.
Avec yarn
cela ne semble pas fonctionner.
Existe-t-il un moyen d'obtenir cette fonctionnalité avec yarn
?
Ceci est actuellement possible en utilisant des variables d'environnement au format npm_config_{snake_case_param}=true/false
Par exemple, npm install --build-from-source=true
devient:
npm_config_build_from_source=true yarn install
C'est documenté ici https://yarnpkg.com/lang/en/docs/envvars/#toc-npm-config
Le fil n'expose pas automatiquement --
arguments de la commande install pour les scripts de cycle de vie (scripts pré/post/installation dans package.json des dépendances). Voici le code où Yarn construit Env pour l'exécution du script https://github.com/yarnpkg/yarn/blob/master/src/util/execute-lifecycle-script.js#L39 .
Vous pouvez passer des valeurs spécifiques via le paramètre env
dans .yarnrc et également il construit npm_config_*
paramètres basés sur la configuration .yarnrc/.npmrc.