Я пробовал несколько решений и не нашел ничего, что работает.
Моя базовая директория для всех файлов - localhost / manpower.
Я положил это в свой веб-пакет ... let mix = require ('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/assets/js/app.js', 'public/assets/js')
.sass('resources/assets/sass/app.scss', 'public/assets/css')
.sass('resources/assets/sass/header.scss', 'public/assets/css')
.version();
Когда я использую ~ для дома, обработка CSS просто удаляет ~
mix.setPublicPath ('рабочая сила / общественность');
Просто создает каталог в существующей файловой структуре и помещает в него файлы. К сожалению, это популярное решение не меняет вывод окончательного CSS.
Независимо от того, что я пытаюсь, я не могу заставить его добавить «рабочую силу» к URL-адресам, которые я помещаю в SCCS!






Отправляя свою конфигурацию, чтобы помочь вам, я думаю, что вы забыли определить псевдоним, у меня есть моя конфигурация в двух файлах, чтобы помочь IDE (PHPStorm) распознать ~ (решение из этого ответа https://stackoverflow.com/a/50159420/5458355)
// webpack.config.js
const path = require('path')
const webpack = require('webpack')
const LodashModuleReplacementPlugin = require('lodash-webpack-plugin')
module.exports = {
resolve: {
extensions: ['.js', '.json', '.vue'],
alias: {
'~': path.resolve(__dirname, './resources/assets/js')
}
},
output: {
path: process.env.MIX_APP_URL, <--- var from .env
publicPath: '/Socse.GST/public/',
chunkFilename: 'dist/js/chunk.[name].js'
}
}
// webpack.mix.js
const path = require('path')
const mix = require('laravel-mix')
const webpack = require('webpack')
mix
.js('resources/assets/js/app.js', 'public/dist/js')
.sass('resources/assets/sass/app.scss', 'public/dist/css')
.styles([
'resources/assets/sass/fa/css/fontawesome-all.css',
'public/css/awesome-bootstrap-checkbox.css',
'public/css/inspinia.css',
'node_modules/vue-multiselect/dist/vue-multiselect.min.css'
], 'public/dist/css/all.css')
.sourceMaps()
//.disableNotifications()
if (mix.inProduction()) {
mix.version()
}
mix.webpackConfig({
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default']
})
],
resolve: {
extensions: ['.js', '.json', '.vue'],
alias: {
'~': path.join(__dirname, './resources/assets/js')
}
},
output: {
chunkFilename: 'dist/js/chunk.[name].[chunkhash].js',
path: process.env.MIX_APP_URL,
publicPath: '/wms/public/'
}
})
у вас есть псевдоним в объекте разрешения? вы можете опубликовать свой webpack.mix полностью и свой scss-файл?
Новая версия
const path = require('path');
const mix = require('laravel-mix');
const webpack = require('webpack');
mix
.js('resources/assets/js/app.js', 'assets/js')
.sass('resources/assets/sass/app.scss', 'assets/css')
.sass('resources/assets/sass/header.scss', 'assets/css')
.version()
.options({
processCssUrls: true
});
if (mix.inProduction()) {
mix.version()
}
mix.webpackConfig({
resolve: {
alias: {
'~': path.join(__dirname, './resources/')
}
},
output: {
chunkFilename: 'dist/js/chunk.[name].[chunkhash].js',
path: process.env.MIX_APP_URL,
publicPath: '/public/'
}
})
Я почти уверен, что это проблема с webpack.config.js
Мне удалось решить некоторые проблемы, но ошибка осталась.
/**
* As our first step, we'll pull in the user's webpack.mix.js
* file. Based on what the user requests in that file,
* a generic config object will be constructed for us.
*/
let mix = require('../index');
let ComponentFactory = require('../components/ComponentFactory');
new ComponentFactory().installAll();
require(Mix.paths.mix());
/**
* Just in case the user needs to hook into this point
* in the build process, we'll make an announcement.
*/
Mix.dispatch('init', Mix);
/**
* Now that we know which build tasks are required by the
* user, we can dynamically create a configuration object
* for Webpack. And that's all there is to it. Simple!
*/
let WebpackConfig = require('../src/builder/WebpackConfig');
//module.exports = new WebpackConfig().build();
const path = require('path')
const webpack = require('webpack')
module.exports = {
resolve: {
extensions: ['.js', '.json', '.vue'],
alias: {
'~': path.resolve(__dirname, './resources/assets/js')
},
},
output: {
path: process.env.MIX_APP_URL,
publicPath: '/manpower/public/',
chunkFilename: 'dist/js/chunk.[name].js'
}
}
Вы можете указать свою версию mix и sass-loader (в старом sass-loader есть ошибка, которая не работает с тильдой). Также, пожалуйста, не публикуйте комментарий как обновление, это вызовет путаницу в вашем вопросе.
Как правило, избегайте использования тильды; вместо этого используйте относительный путь. Вы хотите посмотреть на этот ответ: https://stackoverflow.com/a/33972875/2188545
Даже без всех сбивающих с толку комментариев тильда сбивает с толку при использовании в url, особенно когда путь manpower/ в вашем браузере не является простым корневым путем /. Не поймите меня неправильно, тильда подходит для импорта css, поскольку обычно разрешается во время компиляции; просто больше запутывает при использовании в url. Кроме того, используйте цитату вокруг URL-адреса css.
Я ценю это. Но я не могу заставить этот путь работать. Насколько я могу судить, это проблема Windows. Что я могу сказать, laravel ненавидит windows 10. Это безумие. Я установил для "setPublicPath" значение "manpower / public", и ресурсы помещаются в c: / wamp64 / www / Я вижу, что у других есть эта проблема ... github.com/JeffreyWay/laravel-mix/issues/960 Насколько я могу судить, они говорят, что "path.normalize" работает для них. Все, что я пробую, не работает. Я пробовал варианты publicPath, .setPublicPath и многие другие. Из того, что я могу сказать, действует какая-то сумасшедшая логика.
Я добавляю путь, "рабочая сила" и получаю c: \ wamp64 \ www \ manpower \ manpower \ Я удаляю путь и получаю c: \ wamp64 \ www
И мой вывод выглядит как / images
Я получил его для вывода в правильный каталог. Но у меня так и не получилось, что это будет выход / рабочая сила как дом. Насколько я могу судить, это неприменимо к Windows 10 и должно быть отмечено как таковое.
Я потратил 10 часов, пытаясь вывести это на печать. Я бросаю Windows и перехожу на Linux-машину. Я просто не могу заставить его работать в Windows. Не знал, что Laravel - это только Linux. :(
Большое спасибо, но это не решает проблему, с которой я столкнулся. Я сделал новую установку laravel на этой машине. Добавил SCCS в путь. Изменил конечное значение на новую установку. И запустил npm run dev. Тем не менее, я получаю "/" в качестве корневого пути ... Все, что я делаю, влияет на путь, на который смотрит компьютер, а не на путь, назначенный окончательному CSS. В настоящее время я провел последние 4 часа, исследуя это. Единственные предлагаемые решения, которые я могу найти, не решают проблему. Я все перепробовал.