Laravel 5.8。如何在webpack.mix.js中使用.env文件的变量

时间:2019-03-16 17:17:28

标签: laravel webpack environment-variables

我在.env文件中做了以下操作: APP_ENV =生产 MIX_APP_ENV =“ $ {APP_ENV}”

在webpack.mix.js文件中: const APP_ENV = process.env.MIX_APP_ENV;

使用if else运算符,我检查是否未为APP_ENV变量分配任何内容。 我需要执行以下操作-根据环境,将sass和js文件编译到特定文件夹中。

我正在尝试执行以下操作,但没有任何效果:

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 个答案:

答案 0 :(得分:0)

您不能那样使用它,因为您位于JS文件中,而JS不必访问它。 您可以使用npm安装dotenv npm install dotenv --save并像这样使用它:'require('dotenv')。load();'在您的混合文件中,现在您可以做到:

    if (process.env.NODE_ENV !== 'production') {
       // code
    }

答案 1 :(得分:0)

无需在.env文件中创建中间变量MIX_APP_ENV。 以下代码有效:

require('dotenv').config();
const env = process.env.APP_ENV;

答案 2 :(得分:0)

我意识到这是一个古老的问题,但是最简单的解决方法(使您的代码正常工作)是更改...

我在.env文件中执行了以下操作:APP_ENV = production MIX_APP_ENV =“ $ {APP_ENV}”

.. to ..

APP_ENV =生产 MIX_APP_ENV =生产

(您的webpack.mix.js无法将“ $ {APP_ENV}”转换为“生产”)