Я хочу получить данные одной переменной env в моем файле scss, используя микс в Laravel. Как это получить?
Я использовал что-то вроде этого. Но это URL-адрес, поэтому он не получает.
mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
data: `awsUrl: "${(process.env.MIX_AWS_S3_CDN)}" ;`
})






У меня это работает только при условии, что я dotenv сам внутри webpack.mix.js.
Это должно работать:
let mix = require('laravel-mix');
require('dotenv').config();
mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
data: '$awsUrl:\'' + process.env.MIX_AWS_URL + '\';'
})
Есть простой способ сделать это. Выполните шаги, как показано ниже,
Поправьте меня, если не так, вы хотите передать URL-адрес файла main-v2.scss в качестве переменной.
Добавьте переменную в свой файл .env, как показано ниже,
MIX_AWS_URL='https://your-aws-endpoint.xyz?v1'
В вашем файле webpack.mix.js добавьте, как показано ниже,
mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
// Use "data" for prependData instead of data.
data: '$awsUrl:\'' + process.env.MIX_AWS_URL + '\';'
// single quotes needs to be added as your URL contains : (colon) so, it may create an issue. Better to escape.
})
Затем вы можете напрямую использовать переменную $awsUrl в своем файле main-v2.scss, как показано ниже.
// Pass to function
@import url($awsUrl);
// Or assign to another variable
$myVariable : $awsUrl;
Вот и все!
Для Laravel 8+ используйте ниже на шаге 2,
mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
prependData: '$awsUrl:\'' + process.env.MIX_AWS_URL + '\';'
// single quotes needs to be added as your URL contains : (colon) so, it may create an issue. Better to escape.
})
Я пытаюсь это сделать на laravel 8, но отображается ошибка
для тех, кто использует ларавель 8+, параметр data изменен на prependData
mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
prependData: "$awsUrl:'" + process.env.MIX_AWS_URL + "';"
})
да. Необходимо импортировать пакет dotenv.