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, } });