Je suis nouveau sur Webpack et j'ai élaboré presque toutes les sections de construction, mais le problème est que je veux passer les variables d'environnement d'un fichier .env à la configuration de Webpack, afin de pouvoir les transmettre à mes fichiers de construction via le plugin webpack.DefinePlugin
.
Actuellement, je suis en mesure de passer variable d’environnement directement de webpack à ma construction. S'il vous plaît voir le code ci-dessous que j'ai utilisé dans webpack.
new webpack.DefinePlugin({
"API_URL": JSON.stringify("http://my-api.com"),
"SECRET_KEY" : "MYSECRETKEYGOESHERE"
}),
Mon script de construction package.json
est
"scripts": {
"start": "NODE_ENV=development webpack-dev-server --progress --port 8000 --content-base app/build/src"
}
Vous pouvez utiliser le paquet dotenv
à cette fin
Référence: https://www.npmjs.com/package/dotenvhttps://github.com/motdotla/dotenv
En haut du fichier de configuration de webpack, exigez dotenv comme suit (définissez votre chemin .env de manière précise)
var dotenv = require('dotenv').config({path: __dirname + '/.env'});
dans la section des plugins de configuration webpack
new webpack.DefinePlugin({
"process.env": dotenv.parsed
}),
Vous pouvez maintenant utiliser les variables env dans l’ensemble de votre application. essayez console.log(process.env);
dans votre code d'application
Je ne peux pas commenter pour clarifier les informations, donc mes excuses pour la réponse.
Vous pourriez faire:
var env = require('.env');
puis
new webpack.DefinePlugin({
"API_URL": JSON.stringify("http://my-api.com"),
"SECRET_KEY" : "MYSECRETKEYGOESHERE",
"env_property": env.property
}),
Mais je fais des hypothèses sur votre fichier .env et la façon dont il a été configuré avec cette réponse
De webpack docs :
L'option d'environnement de ligne de commande webpack --env vous permet de transmettre dans autant de variables d'environnement que vous le souhaitez. Variables d'environnement sera rendu accessible dans votre webpack.config.js. Par exemple, --env.production ou --env.NODE_ENV = local (NODE_ENV est traditionnellement utilisé pour définir le type d'environnement, voir ici.)
dans votre package.json
webpack --env.NODE_ENV=local --env.production --progress
dans votre webpack.config.js
module.exports = env => {
// Use env.<YOUR VARIABLE> here:
console.log('NODE_ENV: ', env.NODE_ENV) // 'local'
console.log('Production: ', env.production) // true
return {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}