Как получить переменную env в scss

Я хочу получить данные одной переменной env в моем файле scss, используя микс в Laravel. Как это получить?

Я использовал что-то вроде этого. Но это URL-адрес, поэтому он не получает.

mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
    data: `awsUrl: "${(process.env.MIX_AWS_S3_CDN)}" ;`
})
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
11
0
12 869
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

У меня это работает только при условии, что я 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 + '\';'
})

да. Необходимо импортировать пакет dotenv.

S K R 08.07.2021 13:15
Ответ принят как подходящий

Есть простой способ сделать это. Выполните шаги, как показано ниже,

Поправьте меня, если не так, вы хотите передать URL-адрес файла main-v2.scss в качестве переменной.

  1. Добавьте переменную в свой файл .env, как показано ниже,

    MIX_AWS_URL='https://your-aws-endpoint.xyz?v1'

  2. В вашем файле 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.
        })
    
  3. Затем вы можете напрямую использовать переменную $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, но отображается ошибка

Mansour Alnasser 02.02.2021 11:07

для тех, кто использует ларавель 8+, параметр data изменен на prependData

  mix.sass('resources/assets/sass/main-v2.scss', 'public/css', {
       prependData: "$awsUrl:'" + process.env.MIX_AWS_URL + "';"
    })

Другие вопросы по теме