如何将 env 参数传递给 Laravel Mix 6?

K0r*_*hun 8 php environment-variables laravel webpack laravel-mix

有没有办法通过命令行将参数传递给 laravel mix 并将它们放入 webpack.mix.js 文件中?例如,我添加了 frontend-dev 行,但运行“yarn run frontend-dev”后无法获取“foo”变量。

包.json

{
    "private": true,
    "scripts": {
        "development": "mix",
        "frontend-dev": "mix -- --env foo=frontend"
    },
    "devDependencies": {
        "axios": "^0.21",
        "laravel-mix": "^6.0.6",
        "lodash": "^4.17.19",
        "postcss": "^8.1.14"
    }
}
Run Code Online (Sandbox Code Playgroud)

webpack.mix.js

const mix = require('laravel-mix');

//console.log(process.env);
console.log(process.env.foo); //output: undefined
Run Code Online (Sandbox Code Playgroud)

Kar*_*ill 10

您可以从命令行执行此操作...

npm run development --foo=frontend
Run Code Online (Sandbox Code Playgroud)

然后在 webpack.mix.js 中,您可以为 foo 变量添加前缀npm_config_.

console.log(process.env.npm_config_foo);
Run Code Online (Sandbox Code Playgroud)

否则,如果您希望该值来自 .env 文件,则可能需要在 .env 变量前添加 前缀MIX_,例如MIX_FOO_VARIABLE=frontend

然后,在 webpack.mix.js 中,您可以执行以下操作。

console.log(process.env.MIX_FOO_VARIABLE);
Run Code Online (Sandbox Code Playgroud)

  • 当使用 mix 命令时,这不起作用: `$ mix --product --ieCompat=true error:known option '--ieCompat=true'` 和 `$ mix --product -- --ieCompat=true [webpack -cli] 错误:未知选项 '--ieCompat=true'` (2认同)