J'ai fait ce qui suit dans un fichier .env: APP_ENV = production MIX_APP_ENV = "$ {APP_ENV}"
Dans le fichier webpack.mix.js: const APP_ENV = process.env.MIX_APP_ENV;
En utilisant l'opérateur if else, j'ai vérifié que rien n'était assigné à la variable APP_ENV. Je dois faire ce qui suit - selon l'environnement, compiler les fichiers sass et js dans un dossier spécifique.
J'essaye de faire ce qui suit, mais rien ne fonctionne:
const APP_ENV = process.env.MIX_APP_ENV; if (APP_ENV == 'dev' || APP_ENV == 'production') { mix .js('resources/js/app.js', 'js') .sass('resources/sass/app.scss', 'css') .version(); } else { mix .setPublicPath('public/build') .setResourceRoot('/build/') .js('resources/js/app.js', 'js') .sass('resources/sass/app.scss', 'css') .version(); }
3 Réponses :
Vous ne pouvez pas l'utiliser comme ça car vous êtes dans un fichier JS
et JS n'a pas besoin d'y accéder.
Vous pouvez installer avec npm
le dotenv npm install dotenv --save
et l'utiliser comme ceci: 'require (' dotenv '). Load ();' dans votre fichier de mixage et maintenant vous pouvez le faire:
if (process.env.NODE_ENV !== 'production') { // code }
Mais j'ai besoin de lire les données du fichier .env, pas du package.json
D'où vient la variable NODE_ENV?
Bien sûr, en installant le package dotenv
, vous le lirez. Le package est lu automatiquement à partir de la racine. NODE_ENV
est une variable statique
Il n'était pas nécessaire de créer une variable intermédiaire MIX_APP_ENV dans le fichier .env. Le code suivant fonctionne:
require('dotenv').config(); const env = process.env.APP_ENV;
Je me rends compte que c'est une vieille question, mais la solution la plus simple (pour faire fonctionner votre code) est de changer ...
J'ai fait ce qui suit dans le fichier .env: APP_ENV = production MIX_APP_ENV = "$ {APP_ENV}"
..à ..
APP_ENV = production MIX_APP_ENV = production
(votre webpack.mix.js ne pourra pas convertir "$ {APP_ENV}" en "production")
Votre fichier
.env
n'est pas chargé dans votre environnement, mais la bibliothèque PHPdotenv
utilisée par Laravel recherche le fichier.env
et fait les valeurs disponible via l'assistantenv
lors de l'exécution - permettant aux variables d'environnement de remplacer les valeurs spécifiées par.env
. Cela signifie qu'en dehors de PHP, vous devez utiliser une bibliothèque équivalente, par exemple: npmjs.com/ package / dotenv-webpack ou npmjs.com/package/dotenvdotenv
est une dépendance delaravel-mix