webpack配置less以及js中引入的图片问题
1.问题重现
当我做了这个配置以后,发现less里的图片可以正常展现到页面,但是js里的图片以及其他文件都不能正常展现,都报404
原始配置如下:
// 如果有額外的.babelrc配置的話就可以使用這段代碼1
// module.exports = {
// module: {
// rules: [
// {
// test:/\.jsx?$/,
// use: ['babel-loader'],
// exclude:/node_modules/ //排除 node_modules目錄
// }
// ]
// }
// }
// 如果有額外的.babelrc配置的話就可以使用這段代碼2
// 在webpack中配置 babel,如果沒有額外的.babelrc配置的話就可以使用這段代碼1
//webpack.config.js
// 首先引入插件1
const HtmlWebpackPlugin = require('html-webpack-plugin');
const isDev = (process.env.NODE_ENV.trim()) === "development"; //html-webpack-plugin 的 config 的妙用4-1
const { CleanWebpackPlugin } = require('clean-webpack-plugin');//清理dist目錄的插件
const path = require('path');//設置出口使用
const config = require('./public/config')[isDev ? 'dev' : 'build'];//html-webpack-plugin 的 config 的妙用4-2
module.exports = {
entry: './src/index.js', //webpack的默認配置,也可以寫一個數組
output: {
path: path.resolve(__dirname, 'dist'), //必須是絕對路徑
// filename: 'bundle.js',
// filename: 'bundle.[hash].js',
filename: 'bundle.[hash:6].js',//考虑到CDN缓存的问题,我们一般会给文件名加上 hash
// publicPath: '../' 打包上线之前要改一下这个哦
},
mode: isDev ? 'development' : 'production',//html-webpack-plugin 的 config 的妙用4-3
module: {
rules: [
{
test: /\.jsx?$/,
use: {
loader: 'babel-loader',
options: {
presets: ["@babel/preset-env"],
plugins: [
[
"@babel/plugin-transform-runtime",
{
"corejs": 3
}
]
]
}
},
exclude: /node_modules/
},
{
//看清楚啦 這裡有四個loaderloader 的执行顺序是从右向左执行的,也就是后面的 loader 先执行,上面 loader 的执行顺序为: less-loader ---> postcss-loader ---> css-loader ---> style-loader
test: /\.(le|c)ss$/,
use: [
'style-loader', 'css-loader',
{
loader: 'postcss-loader',
options: {
plugins: function () {
return [
require('autoprefixer')({
'overrideBrowserslist':[
'>0.25%','not dead'
]
})
]
}
}
}, 'less-loader'],
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|jpeg|webp|svg|eot|gltf|ttf|woff|woff2)$/,
use: [
{
loader: 'url-loader',
// options: {
// limit: 10240, //10K
// esModule: false
// }
// ,
// 使用上面的那一段運行後會把圖片名字改為MD5哈希值,使用下面的會保留原有名稱加上六位哈希值
options: {
limit: 10240, //10K
// publicPath: './src/',
esModule: false,
name: '[name]_[hash:0].[ext]',
outputPath: 'assets' //這個可以將打包後的資源放到指定的文件夾下
}
}
],
exclude: /node_modules/
}
// {
// test: /\.html$/,
// use: 'html-withimg-loader'
// },
]
},
plugins: [
// 數組,放著所有的webpack插件
new HtmlWebpackPlugin({
template: './public/index.html',
filename: 'index.html',
config: config.template, //html-webpack-plugin 的 config 的妙用4-4
minify: {
removeAttributeQuotes: false ,//是否刪除屬性的雙引號
collapseWhitespace: false, //是否折疊空白
},
hash: true //是否加上hash,默認是false
}),
new CleanWebpackPlugin(), //清理dist目錄插件,不需要傳參數,它自己可以找到outPath
// new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns:['**/*','!dll','!dll/**']}) //如果你有需要不刪除dll目錄下的文件的話可以這樣子寫
],
devServer: {
port: '8080', //默認是8080
quiet: false, //默認不啟動
inline: true, // 默認開啟inline 模式,如果設置為false, 開啟 iframe模式
stats: 'errors-only', //終端僅僅打印 error
overlay: false, //默認不啟用
clientLogLevel: 'silent', //日誌等級
compress: true //是否啟用gzip壓縮
},
devtool: 'cheap-module-eval-source-map' //开发环境下使用
}
// 在webpack中配置 babel,如果沒有額外的.babelrc配置的話就可以使用這段代碼2
index.less 图片可以正常显示到页面
@color: red;
body{
div{
color: @color;
transition: all 2s;
}
background: url('./assets/img/mya.png');
.panel {
border: 0;
width: 400px;
font-size: 30px;
line-height: 31px;
text-indent: 20px;
}
body,#webglCanvas {
width: 100%;
height: 100vh;
overflow: hidden;
}
}
js里的写法如下
const { texture: texture5, mesh: mesh5 } = await aaaaaa(
{ url: '../assets/img/testImg/testpng/color2.png' },
[[-1500, -5, 1500], [900, -5, -400]]
);
解决方案如下:
1.执行命令npm i copy-webpack-plugin --save
这里需要注意的是: 这个包存在兼容问题,可能会报错:compilation.getCache is not a function,如果报错就换个版本就行了,尝试执行npm i copy-webpack-plugin@6.0.2 --save
2.进入webpack.config.js里,添加如下代码
const CopyWebpackPlugin = require('copy-webpack-plugin');
new CopyWebpackPlugin({
patterns: [
{
from: 'src/assets/',
to: 'assets/'
},
],
})
重新启动,OK啦~~
webpack配置less以及js中引入的图片问题的更多相关文章
- 在 Node.js 中引入模块:你所需要知道的一切都在这里
本文作者:Jacob Beltran 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58eaf471a58c240ae35bb ...
- js中引入js
第一个js文件(被引入的js文件),文件名one.js,内容如下 function alertInOne(){ alert('in one');} 第二个js文件,文件名two.js,内容如下 ...
- vue.js中引入图片
vue中引入图片 前言:vue中引入图片时,会显示不出来,除非在css中引入.而在template中或者js动态引入时,会显示不出图片. 解决一 图片通过后端返回引入网络图片路径即可. <div ...
- js中元素(图片)切换和隐藏显示问题
这个知识点其实也简单,(当然是在理清思路的情况下),在没预习的情况下听的还真是艰难,上课以来唯一的一次懵逼了一天,感觉乱乱的,全是新属性,所以今晚的我破天荒的熬夜敲代码,一定要弄懂! 现在就来梳理下头 ...
- 关于vue项目中在js中引入图片问题
<template> <div> <img v-for="(star,index) in stars" :src="star.src&quo ...
- vue.js中引入其他文件export的方法:
import {GetPosition} from '../../lib/utils' //找到 该方法的文件路径,然后 用{}拿到 该方法 var position =GetPosition(); ...
- js中保存成图片并下载
1.保存canvas中绘制的内容为图片 HTML代码: <canvas id="canvas" width="400" height="400& ...
- vue引入外部.css文件,webpack将其与.vue中的样式混合打包了,怎么办?
我使用vue-cli搭自己的博客,希望引入公共样式: // main.js import './assets/styles/common.css' 我本来是希望webpack打包后,能将这个样式独立打 ...
- vue-cli 中的 webpack 配置详解
本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...
- vue-cli中的webpack配置
编辑模式下显示正常,打开的时候不知道为啥排版有问题.segementfalut链接在这里 版本号 vue-cli 2.8.1 (终端通过vue -V 可查看) vue 2.2.2 webpack 2. ...
随机推荐
- 5.-GET请求和POST请求
一.定义 无论是GET请求还是POST,统一由视图函数接收请求,通过判定request.method区分具体的请求动作 二.GET处理 GET请求方式中,如果有数据需要传递给服务器,通常会用查 ...
- JS学习笔记 (五) 函数进阶
1.函数基础 1.1 函数的基本概念 函数是一段JavaScript代码,只被定义一次,但是可以被调用或者执行许多次.函数是一种对象,可以设置属性,或调用方法. 函数中的参数分为实参和形参.其中,形参 ...
- 带你了解NLP的词嵌入
摘要:今天带领大家学习自然语言处理中的词嵌入的内容. 本文分享自华为云社区<[MindSpore易点通]深度学习系列-词嵌入>,作者:Skytier. 1 特征表示 在自然语言处理中,有一 ...
- 本地文件上传Gitee
0.对于小白来说,我再细讲一下 一.下载git 下载细节参考博客 二.Git配置 点击桌面的图标,进入Git Bash Here 1.配置自己的用户名和邮箱 git config --global u ...
- nginx转发到uwsgi的配置
server{ server_name ; listen 80 default_server; add_header Access-Control-Allow-Origin *; add_header ...
- i春秋Fuzzing
先查看源码...没东西,抓包 发现也没什么,但是右边有个提示hint: ip,Large internal network(最大内网ip) 可能需要我们伪造代码进行访问,这还不简单,直接在reques ...
- <七>理解多态
理解多态 多种多样的形态(静态多态,动态多态) 静态多态(编译时期) 1:函数重载 bool comparet(int ,int); bool compare(double,double); comp ...
- VulnHub靶机渗透实战9-vikings
本次靶机是CTF风格的靶机. 靶场地址:Vikings: 1 ~ VulnHub 网络呢还是桥接模式. Description Back to the Top A CTF machine with ...
- 五年经验的前端社招被问:CPU 和 GPU 到底有啥区别?
首先来看 CPU 和 GPU 的百科解释: CPU(Central ProcessingUnit,中央处理器):功能主要是解释计算机指令以及处理计算机软件中的数据 GPU(Graphics Proce ...
- Spring中11个最常用的扩展点,你知道几个?
前言 在使用spring的过程中,我们有没有发现它的扩展能力很强呢? 由于这个优势的存在,使得spring具有很强的包容性,所以很多第三方应用或者框架可以很容易的投入到spring的怀抱中.今天我们主 ...