//vue.config.js

const path = require("path");
const SpritesmithPlugin = require("webpack-spritesmith"); //引入雪碧图 module.exports = {
// 请求基本路径(是否在根目录下)
baseUrl: "process.env.NODE_ENV" === "production" ? "/" : "",
// assetsSubDirectory: 'static',//必须热刷新 // http://yuanbao/
// http://www.yuanbaowl.com/
// 输出文件目录 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。
outputDir: "dist",
// // eslint-loader生产模式下禁用lintOnSave是否在保存的时候检查
// lintOnSave: process.env.NODE_ENV !== 'production',
// 关闭语法检查错误警告
lintOnSave: false,
// 放置生成的静态资源 (js、css、img、fonts) 的 相对于输出目录。
// assetsDir:'',
// 指定生成的 index.html 的输出路径 (相对于 输出目录)。也可以是一个绝对路径。
// indexPath:'index.html',
// use the full build with in-browser compiler?
// https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
// compiler: false, // webpack配置
// see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
chainWebpack: config => {},
// 设定webpack
configureWebpack: {
plugins: [
new SpritesmithPlugin({
// 目标小图标
src: {
cwd: path.resolve(__dirname, "./src/assets/images/icon"),
glob: "*.png"
},
// 输出雪碧图文件及样式文件
target: {
image: path.resolve(__dirname, "./src/assets/images/sprite.png"),
css: [
[
path.resolve(__dirname, "./src/assets/css/sprite.less"),
{
format: "function_based_template"
}
]
]
},
customTemplates: {
function_based_template: path.resolve(
__dirname,
"./my_handlebars_template.handlebars"
)
},
// 样式文件中调用雪碧图地址写法
apiOptions: {
cssImageRef: "../images/sprite.png?v=" + Date.parse(new Date())
},
spritesmithOptions: {
algorithm: "binary-tree"
}
})
]
}, // vue-loader 配置项
// https://vue-loader.vuejs.org/en/options.html
// vueLoader: {},
// 生产环境是否生成 sourceMap 文件
productionSourceMap: true,
// css相关配置
css: {
// 是否使用css分离插件 ExtractTextPlugin
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {
css: {
// 这里的选项会传递给css-loader
},
postcss: {
// 这里的选项会传递给 postcss-loader
plugins: [
require("postcss-px2rem")({
remUnit: 75
})
]
}
}
// 启用 CSS modules for all css / pre-processor files.
// modules: false
},
// use thread-loader for babel & TS in production build
// enabled by default if the machine has more than 1 cores
parallel: require("os").cpus().length > 1,
// 是否启用dll
// See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode
// dll: false,
// PWA 插件相关配置
// see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
pwa: {},
// webpack-dev-server 相关配置
devServer: {
port: 8085, // 端口号
host: "localhost",
https: false, // https:{type:Boolean}
open: true, //配置自动启动浏览器
// // 设置代理
proxy: {
"/api": {
// target: 'http://120.79.251.89',//跨域地址
target: "http://Vuewallet",
ws: false, //是否代理websockets
changeOrigin: true, //允许跨域
pathRewrite: {
"^/api": "/"
}
}
},
overlay: {
// 当存在编译器错误或警告时,在浏览器中显示全屏覆盖。
// 默认情况下禁用。如果只想显示编译器错误:
// 同时显示警告和错误:
warnings: true,
errors: true
}
},
// 第三方插件配置
pluginOptions: {
// ...
SpritesmithPlugin: "webpack-spritesmith"
}
};

根目录下创建 my_handlebars_template.handlebars文件写入对应模板

{{#block "sprites"}}
{{#block "spritesheet"}}
@img:url('{{{spritesheet.escaped_image}}}');
@r:75rem;
.icon{
background-size: {{spritesheet.width}}/@r {{spritesheet.height}}/@r;
background-repeat:no-repeat;
display:inline-block;
};
{{/block}}
{{#each sprites}}
.icon-{{{strings.name}}} {
background-image: @img;
background-position: {{offset_x}}/@r {{offset_y}}/@r;
width: {{width}}/@r;
height: {{height}}/@r
};
{{/each}}
{{/block}}

vue-cli3 使用雪碧图的更多相关文章

  1. css雪碧图实现数字切换

    vue中 css 雪碧图应用及数字切换demo 1. CSS Sprites一般只能使用到固定大小的盒子(box)里,这样才能够遮挡住不应该看到的部分. 2.使用css雪碧图的优点: 利用CSS Sp ...

  2. vue 整合雪碧图功能

    1.通过命令新建一个vue项目 环境要求: 安装有 Node.js. vue. vue-cli . 创建项目: vue init webpack tx_demo cd tx_demo 进入项目,下载依 ...

  3. vue-cli3使用webpack-spritesmith配置雪碧图

    一.背景问题 项目中如果有大量的小图标,如果不使用阿里的iconfont.UI给一个加一个,加一个引用一个,每个图标虽然很小,但是也是一次请求,每次请求都是消耗性能资源的. 二.解决思路 使用webp ...

  4. webpack使用雪碧图插件

    1.先安装插件 npm install --save-dev webpack-spritesmith 2.配置webpack 配置之前 先引入var SpritesmithPlugin = requi ...

  5. 关于vue-eslint自动补全代码,以及自动生成雪碧图

    一.配置eslint module.exports={ "printWidth": 240, //一行的字符数,如果超过会进行换行,默认为80 "tabWidth&quo ...

  6. 用FSM一键制作逐帧动画雪碧图 Vue2 + webpack

    因为工作需要要将五六十张逐帧图拼成雪碧图,网上想找到一件制作工具半天没有找到,就自己用canvas写了一个. 写成之后就再没有什么机会使用了,因此希望有人使用的时候如果遇到bug了能及时反馈给我. 最 ...

  7. 原创:CSS3技术-雪碧图自适应缩放与精灵动画方案

    花了一个礼拜完成了慕课网定制的七夕主题效果,其中有一个没实现好的功能,就是雪碧图的自适应缩放 ps: 以下实现都是基于移动端的处理 原图如下: 人物是采用的是雪碧图,通过坐标绝对数据取值 问题很明显, ...

  8. 图标字体 VS 雪碧图——图标字体应用实践

    本文介绍使用图标字体和SVG取代雪碧图的方法.雪碧图是很多网站经常用到的一种技术,但是它有缺点:高清屏会模糊.无法动态变化如hover时候反色.而使用图标字体可以完美解决上述问题,同时具备兼容性好,生 ...

  9. V4.0到来了,css雪碧图生成工具4.0更新啦

    V3.0介绍 http://www.cnblogs.com/wang4517/p/4476758.html V4.0更新内容 V4.0下载地址:http://download.csdn.net/det ...

随机推荐

  1. 【转载】微信小程序-开发入门(一)

    微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应用场景(用完即走和二维码分发等)还是很值 ...

  2. 算法习题---4.4信息解码(UVa213)

    一:题目 消息编码方案要求在两个部分中发送一个被编码的消息.第一部分:称为头,包含消息的字符.第二部分包含一个模式 表示信息.你必须写一个程序,可以解码这个消息. (一)题目详细 你的程序的编码方案的 ...

  3. APP测试面试题(一)

    一.开场问题:(自由发挥) 1.请自我介绍一下: 2.为什么离开上一个公司呢? 3.做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具? 4.你觉得为什么要在一个团队中开展软 ...

  4. LeetCode_58. Length of Last Word

    58. Length of Last Word Easy Given a string s consists of upper/lower-case alphabets and empty space ...

  5. asp.net core swagger使用及注意事项

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.是一款RESTFUL接口的文档在线自动生成+功能测试软件.主要目的是构建标准的.稳定的.可重 ...

  6. 手写C++代码实现POST传输数据

    char *pHttpPost = "POST %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "Content-Type: a ...

  7. 【c# 学习笔记】c#中的语句

    1.条件语句: if语句: bool condition = true; if (condition) { } else if (condition) { } else { } switch语句: b ...

  8. charles 高级批量请求

    本文参考:charles 高级批量请求 这个我感觉有点鸡肋,真正的批量请求,推荐使用JMter charles 高级批量请求就是下面这种简单的设置的 简单的使用还是可以的; 比如简单的测试下,向某一个 ...

  9. 前端接收 post 请求返回的文件

    坐标过多无法用Get请求,只能用post下载. 但发现ajax发送的post请求没有触发下载,返回的流媒体会存在于接口返回的response中. 查询发现AJAX并不会唤起浏览器的下载窗口,AJAX设 ...

  10. 按CSS查询一个元素

    按CSS查询 示例1 查询一个 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 < ...