CSS не работает в производственной среде с Laravel Mix 5

Это для моего приложения Laravel + Vue SPA.

У меня есть этот файл конфигурации Laravel Mix здесь:

const path = require('path');
const fs = require('fs-extra');
const mix = require('laravel-mix');
const tailwindcss = require('tailwindcss');
require('laravel-mix-bundle-analyzer');

function publishAssets() {
    const publicDir = path.resolve(__dirname, './public');

    if (mix.inProduction()) {
        fs.removeSync(path.join(publicDir, 'dist'));
    }

    fs.copySync(path.join(publicDir, 'build', 'dist'), path.join(publicDir, 'dist'));
    fs.removeSync(path.join(publicDir, 'build'));
}

mix.js('resources/js/app.js', 'public/dist/js')
    .sass('resources/sass/app.scss', 'public/dist/css').options({
        postCss: [tailwindcss('./tailwind.config.js')],
        processCssUrls: false,
    });

// alias the ~/resources folder
mix.webpackConfig({
    plugins: [
        // new BundleAnalyzerPlugin()
    ],

    resolve: {
        extensions: ['.js', '.json', '.vue'],
        alias: {
            '@': `${__dirname}/resources`,
            '~': path.join(__dirname, './resources/js'),
            ziggy: path.join(__dirname, './vendor/tightenco/ziggy/dist/js/route.js'),
        },
    },

    output: {
        chunkFilename: 'dist/js/[chunkhash].js',
        path: mix.config.hmr ? '/' : path.resolve(__dirname, './public/build'),
    },
});

mix.then(() => {
    if (!mix.config.hmr) {
        process.nextTick(() => publishAssets());
    }
});

Он отлично работает с npm run watch, но когда я делаю npm run production, CSS не работает. Сайт загружается и работает, но отсутствует CSS.

Может ли кто-нибудь увидеть, что в моем коде вызывает это?

Вот мой spa.blade.php:

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

...

<script src = "{{ mix('dist/js/app.js') }}"></script>

На вкладке сети инструментов Chrome dev размер файла CSS составляет 270 КБ в среде разработки и 42 КБ в рабочей среде.

Что-то переводится неправильно.

Я не уверен, что понимаю вашу проблему «CSS отсутствует», «CSS-файл [...] имеет размер 42 КБ в рабочей среде». Вы имеете в виду, что какой-то CSS отсутствует или ваш CSS не загружен?

Clément Baconnier 19.12.2020 01:00

Какая запись для файла app.css в mix-manifest.json после запуска npm run prod? Попробуйте загрузить app.css без помощника микширования и проверьте. Если он загружается правильно, это означает, что в mix-manifest.json нет правильной записи для app.css.

Donkarnash 19.12.2020 01:03

Запись css — <link rel = "stylesheet" href = "/dist/css/app.css">, а в микс-манифесте — "/dist/css/app.css": "/dist/css/app.css"

agm1984 19.12.2020 02:53

И под отсутствием css я имею в виду, что это не влияет на стиль страницы. Кажется, он загружен и работает в среде разработки, но не в рабочей среде.

agm1984 19.12.2020 02:56
Стоит ли изучать 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-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
1 757
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я называю это решенным на данный момент, потому что мой сайт начал работать.

было крайне сложно ориентироваться, так как у меня было 6 месяцев работы над веткой разработки, и она работала через npm run watch. Когда я объединился с мастером, npm run production загрузился неправильно — стили наполовину были там, наполовину отсутствовали.

Решением было понизить рейтинг с [email protected] до [email protected].

По пути я прочитал что-то о postcss или о чем-то, что не работает с флагом --no-progress, который стоит на npm run production.

Кто-то может попробовать убрать этот флаг, но я уже понизил рейтинг попутного ветра, поэтому не стал этого делать.

В моем случае это вызвано установкой неправильного свойства «purge» в конфигурационном файле tailwindcss.

Когда я запускал «npm run hot» или «npm run dev», сайт был в порядке. Но он сломался, когда я запустил «npm run prod». Кажется, что режим разработки игнорирует свойство «очистка».

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