Ich bin neu im Webpack und habe fast alle Build-Abschnitte ausgearbeitet, aber jetzt besteht das Problem darin, dass ich die Umgebungsvariablen von einer .env-Datei an die Webpack-Konfiguration übergeben möchte, sodass ich diese Variablen über webpack.DefinePlugin
plugin an meine Build-Dateien übergeben kann.
Momentan kann ich Umgebungsvariablen direkt vom Webpack an meinen Build übergeben. Bitte beachten Sie den Code, den ich im Webpack verwendet habe.
new webpack.DefinePlugin({
"API_URL": JSON.stringify("http://my-api.com"),
"SECRET_KEY" : "MYSECRETKEYGOESHERE"
}),
Mein package.json
-Build-Skript lautet
"scripts": {
"start": "NODE_ENV=development webpack-dev-server --progress --port 8000 --content-base app/build/src"
}
Sie können das Paket dotenv
für diesen Zweck verwenden
Referenz: https://www.npmjs.com/package/dotenvhttps://github.com/motdotla/dotenv
Benötigen Sie dotenv oben in der Webpack-Konfigurationsdatei wie folgt (stellen Sie Ihren .env-Pfad korrekt ein).
var dotenv = require('dotenv').config({path: __dirname + '/.env'});
in webpack config plugins verwenden
new webpack.DefinePlugin({
"process.env": dotenv.parsed
}),
Jetzt können Sie die env-Variablen in Ihrer App verwenden. Versuchen Sie console.log(process.env);
in Ihrem App-Code
Ich kann nichts kommentieren, um Informationen zu klären, also entschuldige ich mich für die Antwort.
Du könntest es tun:
var env = require('.env');
dann
new webpack.DefinePlugin({
"API_URL": JSON.stringify("http://my-api.com"),
"SECRET_KEY" : "MYSECRETKEYGOESHERE",
"env_property": env.property
}),
Aber ich mache Annahmen über Ihre .env-Datei und die Art und Weise, wie sie mit dieser Antwort eingerichtet wird
Aus webpack docs :
Die Webpack-Befehlszeilenumgebungsoption --env ermöglicht das Übergeben von in beliebig vielen Umgebungsvariablen. Umgebungsvariablen wird in Ihrer webpack.config.js zugänglich gemacht. Zum Beispiel, --env.production oder --env.NODE_ENV = local (NODE_ENV wird üblicherweise verwendet, um den Umgebungstyp zu definieren, siehe hier.)
in deinem package.json
webpack --env.NODE_ENV=local --env.production --progress
in deinem 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')
}