Vue Cli 3: определенные выходные пути
мне нужно настроить выходные пути окончательной сборки, как описано ниже:
мой проект Vue по умолчанию из структуры, но выходные пути находятся вне этой структуры:
выходной HTML-файл: ../главная/ресурсы/
вывод всех файлов актив: ../ main / assets / [js / css / img]
и в индексе.html-файл путь, где найти активы, должен быть "js / name.js" и тому подобное.
мой текущий vue.конфиг.js не предоставляет этого:
module.exports = {
chainWebpack: config => {
config.module
.rule('vue')
.use('vue-loader')
.tap(options => {
return options;
});
},
css: {
sourceMap: true
},
baseUrl: '/',
outputDir: '../main/resources/',
assetsDir: '../main/assets/',
runtimeCompiler: undefined,
productionSourceMap: undefined,
parallel: undefined,
configureWebpack: {
module: {
rules: [
{
test: /.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
outputPath: '../main/assets/img',
name: '../main/assets/img/[name].[ext]'
}
}
]
}
]
}
}
}
может кто-нибудь помочь настроить этот файл? Спасибо!
С наилучшими пожеланиями
tschaefermedia
Извините, я был занят другими проектами. Теперь вернемся к VueJS.
обновление:
Я попробовал то, что было указано в сообщениях GIT. Мой вю.конфиг.JS файлы теперь выглядит так:
const path = require('path');
module.exports = {
css: {
sourceMap: true
},
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080',
'changeOrigin': true,
'secure': false
}
}
},
baseUrl: '',
outputDir: '../main/resources/',
assetsDir: '../main/assets/',
chainWebpack: config => {
config.module
.rule('vue')
.use('vue-loader')
.tap(options => {
return options
})
config.module
.rule('images')
.test(/.(png|jpe?g|gif|ico)(?.*)?$/)
.use('url-loader')
.loader('url-loader')
.options({
name: path.join('../main/assets/', 'img/[name].[ext]')
})
}
}
все работает сейчас, как я хочу, но изображения не копируются правильно папка.
В ".../ активы/" у меня есть папка css и js, но нет папки img. В ".../ ressources" рядом с .HTML-код у меня есть эта папка.
1 ответов
после тестирования проблемы на моей сборке, я думаю, вам нужно два изменения:
vue.конфиг.js
module.exports = {
...
outputDir: '../main/resources/',
assetsDir: '../assets/',
...
}
и забудьте о плагине webpack!
assetsDir
тип: строка
по умолчанию: "
каталог (относительно outputDir) в гнездо генерируемые статические активы (js, css, img, шрифты).
таким образом, активы окажутся в ../main/resources/../assets/
что составляет ../main/assets/
.
расположение изображения в проект
оптимальное местоположение IMO (от тестирования) - использовать <project folder>/static
старая папка CLI2 для статических ресурсов. Фактически, любая папка за пределами src
будет делать. Это делает затем обрабатывается как есть, а не "webpacked".
посмотреть Обработка Статических Активы
" Реальные " Статические Активы ... Для сравнения, файлы в static/ не обрабатываются Webpack: они просто копируются в конечный пункт назначения как есть, с таким же именем.
Примечание совершенно верно, они получают хэш управления версиями (см. ниже).
это дает следующую структуру папок сборки:
../main
assets/
css/
fonts/
images/
js/
resources/
index.html
С CLI 3 /static
папка была изменена на /public/static
, но если вы поместите свои изображения там,дополнительно копия сделана под ../main/resources/static
.
если вы предпочитаете это место (оставаться стандартным), вы можете удалить эту копию с помощью postbuild
скрипт package.json
, например, с помощью npm run
под окнами
пакета.в JSON
{
...
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"postbuild": "rd /s /q \"../main/resources/static/images\"",
"lint": "vue-cli-service lint",
"test:unit": "vue-cli-service test:unit"
},
"dependencies": {
ссылки на изображения
в исходниках, я обнаружил, что относительные ссылки на изображения работу штраф.
например,
import myPic from '../public/static/images/myPic.png'
заменяется
../assets/img/myPic.ec4d96e7.png
в встроенной приложения.js.
обратите внимание на хэш-добавлены версии.
обслуживание сборки
я отмечаю, что используемая вами структура папок не может обслуживаться с помощью простого http-server
, как индекс.html находится в main / resources, и этот сервер не может извлекать из main / assets.
я предполагаю, что ваш механизм развертывания занимает позаботиться об этом?