//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. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_12-课程预览功能开发-需求分析

    5 课程预览功能开发 5.1 需求分析 课程预览功能将使用cms系统提供的页面预览功能,业务流程如下: 1.用户进入课程管理页面,点击课程预览,请求到课程管理服务 2.课程管理服务远程调用cms添加页 ...

  2. svn add 命令 递归目录下所有文件

    svn add 命令 递归目录下所有文件 摘自:https://blog.csdn.net/yefl007/article/details/46506281 即使被忽略了也可以使用此命令. svn a ...

  3. $().attr() 和 $().css的区别

    使用jquery的.attr( )方法去给div隐藏,这样写的 $("#div_id").attr("display","none"),发现 ...

  4. 关于类似QQ的展开和折叠效果的实现

    介绍: 1.两级折叠与展开: 实现原理如下: 1>通过表视图的组的头视图和单元格实现; 2>通过改变cell的高度实现; 3>通过cell实现; 实现 UITableView 的ce ...

  5. 看看BeginInvoke的用法,亲爱的们

    看看它是杂带参数的哈 using System; using System.Threading; class MyTest { delegate bool deleTest(string a,stri ...

  6. Python3之返回函数

    参考:https://www.cnblogs.com/mzc1997/p/7641995.html Python中函数不仅可以作为参数还可以作为结果返回 >>> def pro1(c ...

  7. ALBPM Service Config

    ALBPM Config About ALBPM Studio Msg , JSP and webResources together deploy services. Msg     "D ...

  8. 移动架构之MVP框架

    MVP是在开发中常用的框架,要了解其原理,先要从了解MVC开始,这里就对MVP框架做一个简单的介绍 MVC MVC为Model,View与Controllor的缩写 Model:业务逻辑和实体模型 V ...

  9. jira邮箱配置

    系统-邮件-外发邮件

  10. linux的IO复用,select机制理解--ongoing

    一:首先需要搞清楚IO复用.阻塞的概念: Ref:  https://blog.csdn.net/u010366748/article/details/50944516 二:select机制 作为IO ...