获取laravel mix以使用特定的.env文件

时间:2018-04-14 15:55:48

标签: webpack laravel-mix

使用laravel mix我可以指定.env将一些变量包含到我的项目中。

.env.development时,是否可以混合使用我的文件NODE_ENV=development?现在,mix只是继续抓取.env文件并忽略.env.development文件。

是否有可能以某种方式配置它?

我当前的package.json

{
  "scripts": {
    "dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "rmdist": "rimraf dist"
  },
  ...

我当前的webpack.mix.js

  let mix = require('laravel-mix');
  mix.setPublicPath('dist')
     .js('src/app.js', 'scripts/')
     .extract([
        'jquery',
        'axios',
        'babel-polyfill',
        'lodash',
        'tether',
        'vue',
        'bootstrap-vue',
        'vuex',
        'vuex-localstorage'
     ])
     .sass('src/styles/app.scss', 'styles/')
     .copyDirectory('src/assets', 'dist/assets')
     .options({
        processCssUrls: false,
        uglify: true
      })
     .version();

  if (process.env.NODE_ENV === 'development')
     mix.sourceMaps();

1 个答案:

答案 0 :(得分:0)

您可以导入dotenv节点程序包以读取.env文件。它是通过process.env.<KEY-NAME>读取的。

我不确定 Laravel Mix 是否已经在后台(我认为是这样)中已经有了它。但是,只需先运行此命令就不会有伤害:

yarn add dotenv
# or 
npm i dotenv

在您的webpack文件中,您可以像这样使用它:

webpack.config.js

// .. (at the top)
// ..
require('dotenv').config();

const isProduction = process.env.APP_ENV === 'production';

PHP Dotenv 软件包和 Node Dotenv 软件包从同一文件读取。