Ссылка Laravel 5.4 на файл Mix CSS

Я пытаюсь настроить компилятор SASS в CSS через Mix (ранее Elixer) в Laravel 5.4 (используя https://laravel.com/docs/5.4/mix). Все работает нормально, компилируется, и я могу настроить наблюдатель через npm, но ссылаясь на него через файл views/layout/app.blade.php, например:

 <link rel="stylesheet" href="{{ mix('css/app.css') }}">

не работает. В моем браузере это отображается, конечно, как:

<link rel="stylesheet" href="/css/app.css">

Это неправильный путь. Он должен ссылаться на http://localhost/website/public/css/app.css, но изменение чего-либо в приведенном выше коде Mix приводит к ошибке Laravel.

Unable to locate Mix file: /website/public/css/app.css. 
Please check your webpack.mix.js output paths and try again.

Что я делаю не так? Нужно ли мне где-то устанавливать базовый путь, мой .htaccess неправильный или ..? Спасибо за любые ответы.


person Ewinnn    schedule 02.03.2017    source источник
comment
Почему бы вам просто не добавить /website/public перед {{ mix('css/app.css') }}   -  person Baldráni    schedule 02.03.2017
comment
И что касается ответа, это нормально, что он реагирует таким образом. Предполагается, что Laravel указывает на общедоступную папку, поэтому вам нужно, чтобы ваша среда напрямую указывала на общедоступную папку (и, возможно, измените свой htaccess, если вы сделали перенаправление в родительскую папку)   -  person Baldráni    schedule 02.03.2017
comment
Какой веб-сервер вы используете?   -  person user1669496    schedule 02.03.2017


Ответы (2)


Путь, сгенерированный помощником mix(), правильный. Ваш домен должен указывать прямо на «общедоступный» каталог. Все, что выше «общедоступного» каталога, не должно быть доступно через HTTP (это небезопасно).

Поэтому вам нужно создать новый домен (например, project.local) и указать его в общедоступном каталоге Laravel (например, /home/user/website/public/) или просто изменить корневой путь по умолчанию в конфигурации вашего веб-сервера (DocumentRoot, если Apache). Тогда URL-адрес http://project.local/css/app.css будет работать.

person Paweł Dymek    schedule 02.03.2017

в файле webpack.mix.js настройте этот файл, который вам нужен, например, mix.js('resources/js/app.js', 'public/js') .postCss('resources/css/app.css', 'public/css', []); после выполнения команды npm run watch для микширования.

И тогда вы можете добавить свой файл css куда угодно, например <link rel="stylesheet" href="{{ asset('css/app.css') }}"/>

person Yernar    schedule 09.04.2021