背景

我所在组负责我司线上H5互动小游戏的开发,其中一部分开发者负责皮肤的开发。大致流程为:视觉出psd,开发者切图,开发者开发,开发者上传皮肤代码,运营验收。这里边有个奇葩的动作:开发者切图,为什么让开发者沦为切图仔,这里不再详述。大部分开发者都习惯了自己切图,在这里面有个高频的动作:帧动画的素材制作。就是psd切出每一帧的动画,然后用psd/拼图软件将每一帧图片合成雪碧图,工具不好用费时费力。

duiba-sprite 因此诞生

通过该插件,可以将目录下的图片快速合成一张雪碧图,且输出你可能会需要的css文件。当前支持四种合成模式,后期会拓展更多需要的功能。

使用

    // 全局安装并使用npm install duiba-sprite -gduiba-sprite -i img -o img -m 0// 本地安装使用npm install duiba-sprite -Dnpx duiba-sprite -i img -o img -m 0
复制代码

参数说明

  • -i 源文件输入目录(相对于cli的路径),默认值:img
  • -o 雪碧图输出目录(相对于cli的路径),默认值:和-i一致
  • -m 目前支持四种模式(0 1 2 3),对应生成的css文件,默认值:0

如果是3张图片的话,四种模式分别对应下图:

如何撸一个npm包

目录结构

其实随便怎么写都可以的,但推荐如下:

  • src
  • package.json
  • README.md

没错,这样很熟悉,对吧。

package.json

和大家平时开发中的一样,这里说两点特殊的

// 1.指明当前模块的命令和要执行的入口文件,例如:
"bin": {"duiba-sprite": "./src/index.js"}// 2.当前模块依赖的其他模块,例如:我依赖的一个node图片处理库
"peerDependencies": {"images": "^3.0.1"}
复制代码

index.js

和大家平时开发一样,完成一个立即执行的模块即可。

 // 注意点,头部必须指明当前模块需要的运行环境#!/usr/bin/env nodefunction start() {console.log('duiba-sprite 是一个快速生成雪碧图和对应css文件的模块')}start()
复制代码

如何像其它cli一样,支持参数输入

// 当你在控制台输入 npx duiba-sprite -i img -m 1
其实输入的命令为 node src/index.js -i img -m 1
// node会将该命令以空格为分隔符转换为数组,第一项为”node”可执行路径,第二项为入口文件js的完整路径,我们直接去掉即可
const args = process.argv.slice(2);
// 拿到用户输入的值args后该怎么处理,就不用说了
注意一点,所有的输入都会被转为字符串
复制代码

简单的输入我们自己可以处理,复杂的话,可以使用一个node模块Commander.js。commander是一个轻巧的nodejs模块,提供了用户命令行输入和参数解析强大功能,使用也很简单。

发布

1.到npmjs.com注册账号
2.推送模块 npm publish
3.推送的时候会让你输入账号和密码(第一次推送)
复制代码

版本更新

如果需要发布新版本的npm包,记得修改package.json里面的版本号,否则是发布不了的噢。

手撸一个npm包,安利一下duiba-sprite相关推荐

  1. 使用Node.js手撸一个建静态Web服务器,内部CV指南

    文章里有全部代码,也可以积分下载 操作步骤如上图 文章结束 话说这个键盘真漂亮~~ 文章目录 使用Node.js手撸一个建静态Web服务器 一.动静态服务器的概念 1.1 静态Web服务器概念 1.2 ...

  2. Goroutine 并发调度模型深度解析之手撸一个高性能 goroutine 池

    文章目录 1 前言 2 Goroutine & Scheduler 2.1 线程那些事儿 2.1.1 用户级线程模型 2.1.2 内核级线程模型 2.1.3 两级线程模型 2.2 G-P-M ...

  3. 《动手学ROS2》3.6手撸一个节点C++版

    本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 3.5 手撸一个C++节点 作 ...

  4. 很多小伙伴不太了解ORM框架的底层原理,这不,冰河带你10分钟手撸一个极简版ORM框架(赶快收藏吧)

    大家好,我是冰河~~ 最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernate这种ORM框架,它们是如何实现的 ...

  5. 怎么开发一个npm包

    一.注册npm账号 * 怎么将代码提到github,大家都知道需要一个github账号 * 同样,开发一个npm包,当然也需要一个npm账号,将npm包发布到npm的托管服务器 * 注册地址:[htt ...

  6. .Net Core手撸一个基于Token的权限认证

    说明 权限认证是确定用户身份的过程.可确定用户是否有访问资源的权力 今天给大家分享一下类似JWT这种基于token的鉴权机制 基于token的鉴权机制,它不需要在服务端去保留用户的认证信息或者会话信息 ...

  7. 五分钟,手撸一个Spring容器!

    Spring是我们最常用的开源框架,经过多年发展,Spring已经发展成枝繁叶茂的大树,让我们难以窥其全貌. 这节,我们回归Spring的本质,五分钟手撸一个Spring容器,揭开Spring神秘的面 ...

  8. javascript实现图片轮播_手撸一个简易版轮播图(上)

    手撸一个简易版轮播图 实现原理,通过控制 swiper-warpper 容器的定位来达到切换图片的效果. 页面布局 简易版轮播图 < > 页面样式 .container{width: 60 ...

  9. php 六边形 属性图 能力数值图,详解基于 Canvas 手撸一个六边形能力图

    一.前言 六边形能力图如下,由 6 个 六边形组成,每一个顶点代表其在某一方面的能力.这篇文章我们就来看看如何基于 canvas 去绘制这么一个六边形能力图.当然,你也可以基于其他开源的 js 方案来 ...

最新文章

  1. linux中的ln属性,linux 常用基础命令 ln 详细介绍
  2. [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
  3. 【Java】 Java网络编程总结
  4. 撒花!吴恩达《Machine Learning Yearning》英文版完结!
  5. python顺序结构实验设计_实验二 顺序结构程序设计(验证性实验)
  6. EntityFramework进阶(三)- 根据IQueryable获取DbContext
  7. Java 8 Friday:使用Streams API时的10个细微错误
  8. oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
  9. 如何在网中使用百度地图API自定义个性化地图
  10. laravel 5.2 Auth用户认证教程
  11. Javascript定义类(class)的三种方法
  12. 你不可不知的HTML优化技巧
  13. XCTest+XCTool
  14. disc性格测试cs适合职业_DISC职业性格测试
  15. 小程序中点击二维码图片预览、长按转发、保存、识别图中二维码
  16. 2 Python数据分析 Tushare双均线与金叉死叉日期 Pandas数据清洗 级联操作 合并操作
  17. 超低功耗 无线测温模块 无线测温系统, 待机数年无需更换电池
  18. 穷和尚与富和尚的故事
  19. 《软件工程》课程获奖感言
  20. 渝粤题库 陕西师范大学 《法语》作业

热门文章

  1. php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
  2. EEMD算法的基本原理
  3. UE4全景插件Nvidia Ansel Photography
  4. 不用车载传感器,也能L4级自动驾驶?清华百度联手发布全球首个纯路侧感知自动驾驶方案...
  5. 戴森最新吸尘器,竟用上了无人车和宇宙飞船黑科技
  6. 内存256KB设备也能人脸检测,微软提出用RNN代替CNN | NeurIPS 2020
  7. NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
  8. 代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
  9. jquery easyui的应用-2
  10. TensorRT学习笔记(三)