使用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();
答案 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 软件包从同一文件读取。