Web paketinde ortama bağlı değişkenleri geçirme


306

Açısal bir uygulamayı yudumdan web paketine dönüştürmeye çalışıyorum. gulp içinde NODE_ENV bağlı olarak html sayfasındaki (örneğin veritabanı adı) bazı değişkenleri değiştirmek için gulp-preprocess kullanın. Webpack ile benzer bir sonuç elde etmenin en iyi yolu nedir?


1
Takma ad sizin için mi çalıştı?
Juho Vepsäläinen

1
@bebraw: Başımı takma adların etrafında bulamadan önce, DefinePlugin () temel alınarak önerdiğiniz diğer çözümü uyguladım. Şimdi takma adın daha iyi bir çözüm olacağını ve muhtemelen bir zamanlar yeniden düzenleyeceğini görüyorum - teşekkürler. İki çözümünüzü bir yanıta dahil etmek isterseniz, memnuniyetle kabul edeceğim.
kpg

2
Burada konsol mesajı ile yönlendirildi. Browserify'da nasıl düzeltilir?
GN.

2
Bu soru SPA'yı derleme zamanında veya yükleme zamanında yapılandırmaya çalışıyor mu? SPA'lar için iki tür yapılandırmaya dikkat ediyorum: 1) geliştirme veya üretim modu ve 2) dağıtım ortamı, örneğin geliştirme, aşamalandırma, üretim. Sanırım NODE_ENV (1) 'i derleme sırasında yapılandırmak için kullanılabilir ancak dağıtımda (2) için nasıl yapılandırabiliriz, örneğin farklı dağıtım ortamları için bir üretim modunu yapılandırma. Umarım bu soru ile ilgilidir.
Ashley Aitken

1
@AshleyAitken Bu konu hakkında bir cevap bulamadığım harika bir soru (belki de özledim), ancak bu yeni konu gönderdi: stackoverflow.com/questions/44464504/…
David Tesar

Yanıtlar:


427

Bunu başarmanın iki temel yolu vardır.

DefinePlugin

new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),

Bunun sadece "olduğu gibi" eşleşmelerini değiştireceğini unutmayın. Bu yüzden dize olduğu biçimde. Oradaki bir nesne gibi daha karmaşık bir yapıya sahip olabilirsiniz ama fikri anlarsınız.

EnvironmentPlugin

new webpack.EnvironmentPlugin(['NODE_ENV'])

EnvironmentPluginDefinePlugindahili olarak kullanır ve ortam değerlerini kodlamak için eşler. Terser sözdizimi.

takma ad

Alternatif olarak, diğer bir modül aracılığıyla yapılandırmayı kullanabilirsiniz . Tüketici tarafından şöyle görünecektir:

var config = require('config');

Yapılandırmanın kendisi şöyle görünebilir:

resolve: {
    alias: {
        config: path.join(__dirname, 'config', process.env.NODE_ENV)
    }
}

Hadi diyelim process.env.NODE_ENVolduğunu development. O zaman haritaya girerdi ./config/development.js. Haritalandığı modül aşağıdaki gibi yapılandırmayı dışa aktarabilir:

module.exports = {
    testing: 'something',
    ...
};

3
Maçların "olduğu gibi" yerini aldığını belirttiğiniz için teşekkür ederiz. Bir süre JSON.stringify()
kodumun

4
ES2015 kullanıyorsanız, dize enterpolasyonunu da kullanabilirsiniz -'process.env.NODE_ENV': `"${process.env.NODE_ENV || 'development'}"`
user2688473

1
@ tybro0103 JSON.stringify('development')olduğu gibi gerçekten yararlı olmayabilir. Bunun yerine JSON.stringify(someVariable)oldukça olabilir!
superjos

1
Bunu yapmalısın NODE_ENV. Bunu nasıl ayarlayacağınız platformunuza bağlıdır.
Juho Vepsäläinen

1
@AnyulRivas Evet. React process.env.NODE_ENVdesen kullanır ve çalışır.
Juho Vepsäläinen

109

Sadece başka bir seçenek, sadece bir cli arayüzü kullanmak istiyorsanız, sadece definewebpack seçeneğini kullanın . Ben aşağıdaki betiği ekleyin package.json:

"build-production": "webpack -p --define process.env.NODE_ENV='\"production\"' --progress --colors"

Sadece koşmam gerek npm run build-production.


2
Bunun için dokümantasyon var mı? Google’ı yapamıyorum
Richard

5
Webpack @ 2 için, "-p" zaten --optimize-minimize --define process.env.NODE_ENV = "production"
okm

@okm Docs mention -p --optimize-minimize --optimize-oluşum sırasına eşittir, bu nedenle --define process.env.NODE_ENV = "üretim" den bahsedilmez. Kaldırılan bir şey mi?
Nader Ghanbari

1
@NaderHadjiGhanbari Webpack sürüm 2 webpack.js.org/api/cli/#shortcuts
okm

73

Ortama özgü değişkenlerin nasıl ayarlanacağıyla ilgili birkaç seçeneği araştırdım ve bununla sonuçlandım:

Şu anda 2 web paketi yapılandırması var:

webpack.production.config.js

new webpack.DefinePlugin({
  'process.env':{
    'NODE_ENV': JSON.stringify('production'),
    'API_URL': JSON.stringify('http://localhost:8080/bands')
  }
}),

webpack.config.js

new webpack.DefinePlugin({
  'process.env':{
    'NODE_ENV': JSON.stringify('development'),
    'API_URL': JSON.stringify('http://10.10.10.10:8080/bands')
  }
}),

Kodumda bu (kısa) şekilde API_URL değerini alıyorum:

const apiUrl = process.env.API_URL;

EDIT 3 Kasım 2016

Webpack dokümanlarının bir örneği vardır: https://webpack.js.org/plugins/define-plugin/#usage

new webpack.DefinePlugin({
    PRODUCTION: JSON.stringify(true),
    VERSION: JSON.stringify("5fa3b9"),
    BROWSER_SUPPORTS_HTML5: true,
    TWO: "1+1",
    "typeof window": JSON.stringify("object")
})

ESLint ile , no-undefkuralınız varsa, kodda tanımsız değişkenlere özellikle izin vermeniz gerekir . http://eslint.org/docs/rules/no-undef bunun gibi:

/*global TWO*/
console.log('Running App version ' + TWO);

7 Eylül 2017'yi DÜZENLE (Create-React-App özgü)

Çok fazla yapılandırmıyorsanız, Create-React-App: Create-React-App - Özel Ortam Değişkenleri Ekleme konusuna bakın . Başlık altında CRA zaten Webpack kullanıyor.


2
Bunun çalışma zamanında herhangi bir ortam değişkeninin aktarılmasını engellediğini buldunuz mu? Eğer bütün değiştirirseniz process.envsonra vazgeçti process.env.PORTiçin örnek kararlılığının için undefinedartık ortamdan noktasını geçersiz kılabilir anlamına webpack inşa sırasında?
djskinner

Çok teşekkürler. Nihayet bu konuda anlaşılabilir bir cevap!
Dave Sag

süreç nedir? Nereden geliyor? bir düğüm nesnesiyse, tarayıcıya nasıl girer?
Daniel Birowsky Popeski

Bu korkunç bir çözüm, NODE_ENV ve API_URL ayarları dışında iki webpack.configs neredeyse tamamen aynı
Brian Ogden

1
@BrianOgden Evet, bunun için webpack-merge gibi bir şey kullanmalısınız: npmjs.com/package/webpack-merge - Bu soru IMO'sunun biraz kapsamı dışında.
thevangelist

24

Sen geçebilir herhangi bir komut satırı argümanı ek eklentileri olmadan kullanarak --envWebPack 2 başlangıcı:

webpack --config webpack.config.js --env.foo=bar

Değişkeni webpack.config.js dosyasında kullanma:

module.exports = function(env) {
    if (env.foo === 'bar') {
        // do something
    }
}

Kaynak


22

Transpilasyon sırasında herhangi bir ortam değişkenine erişim elde etmek için EnvironmentPluginmevcut webpackolanı doğrudan kullanabilirsiniz .

Eklentiyi webpack.config.jsdosyanızda bildirmeniz yeterlidir :

var webpack = require('webpack');

module.exports = {
    /* ... */
    plugins = [
        new webpack.EnvironmentPlugin(['NODE_ENV'])
    ]
};

Kullanmak istediğiniz ortam değişkenlerinin adını açıkça bildirmeniz gerektiğini unutmayın.


4
Webpack belgelerinde bu çok kullanım durumuyla ilgili bir örnek var. github.com/webpack/docs/wiki/list-of-plugins#environmentplugin
Technetium

1
Ortam değişkenlerinizi bir .env dosyasına koymak istiyorsanız, dotenv paketini kullanabilir ve webpack.config.js dosyasında başlatabilirsiniz. npmjs.com/package/dotenv
Justin McCandless

13

Bir sürü yanıtı kişisel olarak eklemek için aşağıdakileri tercih ederim:

const webpack = require('webpack');
const prod = process.argv.indexOf('-p') !== -1;

module.exports = {
  ...
  plugins: [
    new webpack.DefinePlugin({
      process: {
        env: {
          NODE_ENV: prod? `"production"`: '"development"'
        }
      }
    }),
    ...
  ]
};

Bunu kullanarak korkak bir env değişkeni veya çapraz platform problemi yoktur (env vars ile). Tek yapmanız gereken normal webpackveya webpack -pdev veya üretim için çalıştırmaktır .

Referans: Github sorunu


İşlemin değerlerini tanımlarken tercih 'process.env.NODE_ENV': JSON.stringify('production')üzerinde process: { env: { NODE_ENV: JSON.stringify('production') } }. İkincisinin kullanılması, işlem nesnesindeki diğer değerlerin tanımlanmasını bekleyen bazı modüllerle uyumluluğu bozabilecek işlem nesnesinin üzerine yazacaktır.
slorenzo

13

The vangelist tarafından yukarıdaki yazıdaki Edit'im onaylanmadığından ek bilgi yayınladı.

Eğer değeri almak istiyorsanız package.json tanımlanmış gibi sürüm numarası ve üzerinden erişebilecek DefinePlugin Javascript içeride.

{"version": "0.0.1"}

Ardından, ilgili webpack.config içinde içe aktarılan package.json dosyasını içe aktarma değişkenini kullanarak özniteliğe erişin ve sonra DefinePlugin içindeki özniteliği kullanın .

const PACKAGE = require('../package.json');
const _version = PACKAGE.version;//Picks the version number from package.json

Örneğin webpack.config dosyasındaki belirli yapılandırmalar, DefinePlugin için METADATA kullanıyor:

const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, {
  host: HOST,
  port: PORT,
  ENV: ENV,
  HMR: HMR,
  RELEASE_VERSION:_version//Version attribute retrieved from package.json
});

new DefinePlugin({
        'ENV': JSON.stringify(METADATA.ENV),
        'HMR': METADATA.HMR,
        'process.env': {
          'ENV': JSON.stringify(METADATA.ENV),
          'NODE_ENV': JSON.stringify(METADATA.ENV),
          'HMR': METADATA.HMR,
          'VERSION': JSON.stringify(METADATA.RELEASE_VERSION)//Setting it for the Scripts usage.
        }
      }),

Buna herhangi bir daktilo dosyasının içinden erişin:

this.versionNumber = process.env.VERSION;

En akıllı yol şöyle olurdu:

// webpack.config.js
plugins: [
    new webpack.DefinePlugin({
      VERSION: JSON.stringify(require("./package.json").version)
    })
  ]

Ross Allen'a teşekkürler


11

@ Zer0chain'in cevabına benzer başka bir cevap. Ancak, bir ayrım ile.

Ayar webpack -p yeterlidir.

Aynı:

--define process.env.NODE_ENV="production"

Ve bu aynı

// webpack.config.js
const webpack = require('webpack');

module.exports = {
  //...

  plugins:[
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
};

package.jsonDüğüm dosyasında sadece böyle bir şeye ihtiyacınız olabilir :

{
  "name": "projectname",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "debug": "webpack -d",
    "production": "webpack -p"
  },
  "author": "prosti",
  "license": "ISC",
  "dependencies": {    
    "webpack": "^2.2.1",
    ...
  }
}

DefinePlugin'den birkaç ipucu :

DefinePlugin, derleme zamanında yapılandırılabilen genel sabitler oluşturmanıza olanak tanır. Bu, geliştirme yapıları ve sürüm yapıları arasında farklı davranışlara izin vermek için yararlı olabilir. Örneğin, günlük tutmanın gerçekleşip gerçekleşmediğini belirlemek için genel bir sabit kullanabilirsiniz; belki geliştirme derleminizde günlük kaydı gerçekleştirirsiniz, ancak sürüm derlemesinde gerçekleştirmezsiniz. DefinePlugin'in kolaylaştırdığı bir senaryo budur.


Bunu yazıp yazmadığınızı kontrol edebilirsiniz. webpack --help

Config options:
  --config  Path to the config file
                         [string] [default: webpack.config.js or webpackfile.js]
  --env     Enviroment passed to the config, when it is a function

Basic options:
  --context    The root directory for resolving entry point and stats
                                       [string] [default: The current directory]
  --entry      The entry point                                          [string]
  --watch, -w  Watch the filesystem for changes                        [boolean]
  --debug      Switch loaders to debug mode                            [boolean]
  --devtool    Enable devtool for better debugging experience (Example:
               --devtool eval-cheap-module-source-map)                  [string]
  -d           shortcut for --debug --devtool eval-cheap-module-source-map
               --output-pathinfo                                       [boolean]
  -p           shortcut for --optimize-minimize --define
               process.env.NODE_ENV="production" 

                      [boolean]
  --progress   Print compilation progress in percentage                [boolean]

3

Bir sürü cevaba eklemek için:

Kullanım ExtendedDefinePlugin yerine DefinePlugin

npm install extended-define-webpack-plugin --save-dev.

ExtendedDefinePlugin kullanımı çok daha basittir ve belgelenmiştir :-) link

DefinePlugin iyi belgelere sahip olmadığından , gerçekten işe yaradığını söyleyerek yardımcı olmak istiyorum , c # 'da #DEFINE .

#if (DEBUG)
        Console.WriteLine("Debugging is enabled.");
#endif

Bu nedenle, DefinePlugin'in nasıl çalıştığını anlamak istiyorsanız, c # #define doucmentation'ı okuyun. bağlantı


2

Farklı ortamlar için .env dosyasını kullanmayı tercih ederim.

  1. Kopyalamak için webpack.dev.config dosyasını kullanın env.dev dosyasına kök klasöre için webpack.dev.config
  2. .Env dosyasına kopyalamak env.prodiçin webpack.prod.config dosyasını kullanın

ve kodda

kullanım

require('dotenv').config(); const API = process.env.API ## which will store the value from .env file


2

Aşağıdaki çözümü Webpack 2 için ortam değişkeni için en kolay yöntem olarak buldum:

Örneğin bir web paketi ayarlarımız var:

var webpack = require('webpack')

let webpackConfig = (env) => { // Passing envirmonment through
                                // function is important here
    return {
        entry: {
        // entries
        },

        output: {
        // outputs
        },

        plugins: [
        // plugins
        ],

        module: {
        // modules
        },

        resolve: {
        // resolves
        }

    }
};

module.exports = webpackConfig;

Web Paketine Ortam Değişkeni Ekle:

plugins: [
    new webpack.EnvironmentPlugin({
       NODE_ENV: 'development',
       }),
]

Eklenti Değişkenini tanımlayın ve ekleyin plugins:

    new webpack.DefinePlugin({
        'NODE_ENV': JSON.stringify(env.NODE_ENV || 'development')
    }),

Şimdi webpack komutunu çalıştırırken, env.NODE_ENVbağımsız değişken olarak iletin :

webpack --env.NODE_ENV=development

// OR

webpack --env.NODE_ENV development

Artık NODE_ENVkodunuzdaki herhangi bir yere değişkene erişebilirsiniz .


1

Webpack v4'ten beri mode, Webpack yapılandırmanızda ayar NODE_ENVyapmanız sizin için (üzerinden DefinePlugin) ayarlayacaktır . Dokümanlar burada.


1

İşte benim için çalıştı ve bir json dosyasını yeniden kullanarak ortam değişkenlerimi KURU tutmama izin veren bir yoludur.

const webpack = require('webpack');
let config = require('./settings.json');
if (__PROD__) {
    config = require('./settings-prod.json');
}

const envVars = {};
Object.keys(config).forEach((key) => {
    envVars[key] = JSON.stringify(config[key]);
});

new webpack.DefinePlugin({
    'process.env': envVars
}),

0

Ben büyük bir hayranı değilim ...

new webpack.DefinePlugin({
  'process.env': envVars
}),

... herhangi bir güvenlik sağlamadığı için. bunun yerine, gitignore'a bir web paketi eklemediğiniz sürece gizli eşyalarınızı güçlendirirsiniz 🤷‍♀️ daha iyi bir çözüm var.

Temel olarak bu yapılandırmayla kodunuzu derledikten sonra tüm süreç env değişkenleri tüm koddan kaldırılacak, tek bir işlem transform-inline-environment-variables olmayacak. Sonlandırmak istemiyorsanız babel eklentisi PS sayesinde up.VAR bir sürü undefines ile, webpack babel-loader'ı çağırmadan önce env.js'yi aradığınızdan emin olun, bu yüzden webpack'in ilk aradığı şey budur. babel.config.js dosyasındaki vars dizisi env.js'deki nesneyle eşleşmelidir. şimdi yapacak tek bir biçme işi var. bir .envdosya ekleyin tüm env değişkenlerinizi oraya koyun, dosya projenin kökünde olmalı veya istediğiniz yere eklemekten çekinmeyin, env.js dosyasında aynı konumu ayarladığınızdan ve ayrıca gitignore

const dotFiles = ['.env'].filter(Boolean);

if (existsSync(dotFiles)) {
    require("dotenv-expand")(require("dotenv").config((dotFiles)));
}

Eğer tüm babel + webpack + ts görmek istiyorsanız heaw olsun https://github.com/EnetoJara/Node-typescript-babel-webpack.git

ve aynı mantık tepki ve diğer tüm durumlar için de geçerlidir 💩

config
---webpack.js
---env.js
src
---source code world
.env
bunch of dotFiles

env.js

"use strict";
/***
I took the main idea from CRA, but mine is more cooler xD
*/
const {realpathSync, existsSync} = require('fs');
const {resolve, isAbsolute, delimiter} = require('path');

const NODE_ENV = process.env.NODE_ENV || "development";

const appDirectory = realpathSync(process.cwd());

if (typeof NODE_ENV !== "string") {
    throw new Error("falle and stuff");
}

const dotFiles = ['.env'].filter(Boolean);

if (existsSync(dotFiles)) {
    require("dotenv-expand")(require("dotenv").config((dotFiles)));
}

process.env.NODE_PATH = (process.env.NODE_PATH || "")
    .split(delimiter)
    .filter(folder => folder && isAbsolute(folder))
    .map(folder => resolve(appDirectory, folder))
    .join(delimiter);

const ENETO_APP = /^ENETO_APP_/i;

module.exports = (function () {
    const raw = Object.keys ( process.env )
        .filter ( key => ENETO_APP.test ( key ) )
        .reduce ( ( env, key ) => {
                env[ key ] = process.env[ key ];
                return env;
            },
            {
                BABEL_ENV: process.env.ENETO_APP_BABEL_ENV,
                ENETO_APP_DB_NAME: process.env.ENETO_APP_DB_NAME,
                ENETO_APP_DB_PASSWORD: process.env.ENETO_APP_DB_PASSWORD,
                ENETO_APP_DB_USER: process.env.ENETO_APP_DB_USER,
                GENERATE_SOURCEMAP: process.env.ENETO_APP_GENERATE_SOURCEMAP,
                NODE_ENV: process.env.ENETO_APP_NODE_ENV,
                PORT: process.env.ENETO_APP_PORT,
                PUBLIC_URL: "/"
            } );

    const stringyField = {
        "process.env": Object.keys(raw).reduce((env, key)=> {
            env[key]=JSON.stringify(raw[key]);
            return env;
        },{}),

    };

    return {
        raw, stringyField
    }
})();

eklentisiz trol dosyası

"use strict";

require("core-js");
require("./env.js");

const path = require("path");
const nodeExternals = require("webpack-node-externals");

module.exports = env => {
    return {
        devtool: "source-map",
        entry: path.join(__dirname, '../src/dev.ts'),
        externals: [nodeExternals()],
        module: {
            rules: [
                {
                    exclude: /node_modules/,
                    test: /\.ts$/,
                    use: [
                        {
                            loader: "babel-loader",
                        },
                        {
                            loader: "ts-loader"
                        }
                    ],
                },
                {
                    test: /\.(png|jpg|gif)$/,
                    use: [
                        {
                            loader: "file-loader",
                        },
                    ],
                },
            ],
        },
        node: {
            __dirname: false,
            __filename: false,
        },
        optimization: {
            splitChunks: {
                automaticNameDelimiter: "_",
                cacheGroups: {
                    vendor: {
                        chunks: "initial",
                        minChunks: 2,
                        name: "vendor",
                        test: /[\\/]node_modules[\\/]/,
                    },
                },
            },
        },
        output: {
            chunkFilename: "main.chunk.js",
            filename: "name-bundle.js",
            libraryTarget: "commonjs2",
        },
        plugins: [],
        resolve: {
            extensions: ['.ts', '.js']
        }   ,
        target: "node"
    };
};

babel.config.js

module.exports = api => {

    api.cache(() => process.env.NODE_ENV);

    return {

        plugins: [
            ["@babel/plugin-proposal-decorators", { legacy: true }],
            ["@babel/plugin-transform-classes", {loose: true}],
            ["@babel/plugin-external-helpers"],
            ["@babel/plugin-transform-runtime"],
            ["@babel/plugin-transform-modules-commonjs"],
            ["transform-member-expression-literals"],
            ["transform-property-literals"],
            ["@babel/plugin-transform-reserved-words"],
            ["@babel/plugin-transform-property-mutators"],
            ["@babel/plugin-transform-arrow-functions"],
            ["@babel/plugin-transform-block-scoped-functions"],
            [
                "@babel/plugin-transform-async-to-generator",
                {
                    method: "coroutine",
                    module: "bluebird",
                },
            ],
            ["@babel/plugin-proposal-async-generator-functions"],
            ["@babel/plugin-transform-block-scoping"],
            ["@babel/plugin-transform-computed-properties"],
            ["@babel/plugin-transform-destructuring"],
            ["@babel/plugin-transform-duplicate-keys"],
            ["@babel/plugin-transform-for-of"],
            ["@babel/plugin-transform-function-name"],
            ["@babel/plugin-transform-literals"],
            ["@babel/plugin-transform-object-super"],
            ["@babel/plugin-transform-shorthand-properties"],
            ["@babel/plugin-transform-spread"],
            ["@babel/plugin-transform-template-literals"],
            ["@babel/plugin-transform-exponentiation-operator"],
            ["@babel/plugin-proposal-object-rest-spread"],
            ["@babel/plugin-proposal-do-expressions"],
            ["@babel/plugin-proposal-export-default-from"],
            ["@babel/plugin-proposal-export-namespace-from"],
            ["@babel/plugin-proposal-logical-assignment-operators"],
            ["@babel/plugin-proposal-throw-expressions"],
            [
                "transform-inline-environment-variables",
                {
                    include: [
                        "ENETO_APP_PORT",
                        "ENETO_APP_NODE_ENV",
                        "ENETO_APP_BABEL_ENV",
                        "ENETO_APP_DB_NAME",
                        "ENETO_APP_DB_USER",
                        "ENETO_APP_DB_PASSWORD",
                    ],
                },
            ],
        ],
        presets: [["@babel/preset-env",{
            targets: {
                node: "current",
                esmodules: true
            },
            useBuiltIns: 'entry',
            corejs: 2,
            modules: "cjs"
        }],"@babel/preset-typescript"],
    };
};

"Gitignore'a bir web paketi eklemediğiniz sürece gizli eşyalarınızı güçlendiriyorsunuz." @Ernesto bunu hiç genişletebilir misin?
Katie Byers

Temel olarak paketiniz işlemi bitirir. Env.BLAHBLAH ve gerçek değeri koyar. Örneğin process.env.NODE_ENV u "üretim" ile sonuçlanmak yerine, bunun en iyi örnek olmadığını, ancak gizli bir anahtar olduğunu hayal ettim. Paketiniz gerçek değere sahip olacak ve bu kablolu dizenin neyi temsil ettiğini kim bilebilir?
Ernesto

Hmmm - evet, bu değerler dahili sürümde enterpole edilecek , ancak muhtemelen bunu GitHub'a zorlamıyorsunuz ...
Katie Byers

-4

Nedenini bilmiyorum ama kimse en basit çözümden bahsetmiyor. Düğümler ve homurdanma için bu benim için çalışıyor. Birçok kişi için web paketi kafa karıştırıcı olabilir, sadece aşağıdaki satırı kullanabilirsiniz:

process.env.NODE_ENV = 'production';

Yukarıdaki çözümle envify veya webpack'i kullanmanıza gerek yoktur. Bazen basit kodlanmış çözüm bazı insanlar için işe yarayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.