作者:Yyao | 来源:互联网 | 2022-12-10 13:56
我需要配置最终构建的输出路径,如下所述:
我的Vue项目默认来自结构,但输出路径在此结构之外:
输出HTML文件是: ../ main/resourcess /
输出所有资产文件: ../ main/assets/[js/css/img]
在index.html文件中,查找资产的路径必须是"js/name.js"和类似的.
我目前的vue.config.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帖子中的内容.我的vue.config.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]')
})
}
}
现在一切正常,正如我想要的那样,但图像不会被复制到正确的文件夹中.
在".../assets /"中我有css和js文件夹但没有img文件夹.在我的index.html文件旁边的".../ressources"中,我有这个文件夹.
1> Richard Mats..:
在我的构建中测试了问题之后,我认为您需要进行两项更改:
vue.config.js
module.exports = {
...
outputDir: '../main/resources/',
assetsDir: '../assets/',
...
}
和忘记的WebPack插件!
参考配置:assetsDir
资产目录
类型:字符串
默认值:''
一个目录(相对于outputDir),用于在其下嵌套生成的静态资产(js,css,img,字体)。
因此资产最终../main/resources/../assets/
等于../main/assets/
。
项目中的图像位置
IMO(根据测试)的最佳位置/static
是用于静态资源的旧CLI2文件夹。实际上,外部的任何文件夹src
都可以。这样就可以按原样处理,而不是“打包”处理。
请参阅处理静态资产
“实际”静态资产 ...相比之下,Webpack根本不处理static /中的文件:它们直接使用相同的文件名直接复制到其最终目标位置。
请注意,它们确实会获得版本哈希(请参见下文)。
这提供了以下构建文件夹结构:
../main
assets/
css/
fonts/
images/
js/
resources/
index.html
使用CLI 3时,该/static
文件夹已更改为/public/static
,但是如果将图像放在此处,则会在下创建一个额外的副本../main/resources/static
。
如果您希望使用此位置(保持标准状态),则可以使用中的postbuild
脚本删除该副本package.json
,例如npm run
在Windows下使用,
package.json
../main
assets/
css/
fonts/
images/
js/
resources/
index.html
图片参考
在源代码中,我发现相对图像引用可以正常工作。
例如,
import myPic from '../public/static/images/myPic.png'
被更改为
../assets/img/myPic.ec4d96e7.png
在内置的app.js中。
注意为版本控制添加的哈希。
服务构建
我注意到,您使用的文件夹结构不能与simple一起使用http-server
,因为index.html位于main / resources中,并且该服务器无法从main / assets获取。
我想您的部署机制会解决这个问题吗?