So I have a JS file that I want to mix and copy and compress using Laravel mix; my webpack.mix.js file looks like so:
const mix = require('laravel-mix');
mix.js('resources/js/foo/foo.js', 'public/foo.js');
mix.copy('public/foo.js', 'public/js/foo.js');
mix.version();
The thing is that foo.js has a variable called env, set to dev on local envs, and we set it to app on production.
Is there a way I can automate this? For example, can I pass the variable according to the env while mixing the file and set this?
Advertisement
Answer
https://laravel-mix.com/extensions/string-replace
npm i laravel-mix-string-replace to install the package
This is how I solved it in mix file:
const pixelEnv = process.env.APP_ENV == "local" ? 'dev' : 'app';
mix.js('resources/js/foo/foo.js', 'public/foo.js').stringReplace({
test: /foo.js/,
loader: 'string-replace-loader',
options: {
search: 'PIXEL_ENV',
replace: pixelEnv,
}
});