Это для моего приложения 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 КБ в рабочей среде.
Что-то переводится неправильно.
Какая запись для файла app.css в mix-manifest.json после запуска npm run prod? Попробуйте загрузить app.css без помощника микширования и проверьте. Если он загружается правильно, это означает, что в mix-manifest.json нет правильной записи для app.css.
Запись css — <link rel = "stylesheet" href = "/dist/css/app.css">, а в микс-манифесте — "/dist/css/app.css": "/dist/css/app.css"
И под отсутствием css я имею в виду, что это не влияет на стиль страницы. Кажется, он загружен и работает в среде разработки, но не в рабочей среде.






Я называю это решенным на данный момент, потому что мой сайт начал работать.
было крайне сложно ориентироваться, так как у меня было 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». Кажется, что режим разработки игнорирует свойство «очистка».
Я не уверен, что понимаю вашу проблему «CSS отсутствует», «CSS-файл [...] имеет размер 42 КБ в рабочей среде». Вы имеете в виду, что какой-то CSS отсутствует или ваш CSS не загружен?