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
.envn'est pas chargé dans votre environnement, mais la bibliothèque PHPdotenvutilisée par Laravel recherche le fichier.envet fait les valeurs disponible via l'assistantenvlors 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/dotenvdotenvest une dépendance delaravel-mix