手撸一个npm包,安利一下duiba-sprite
背景
我所在组负责我司线上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相关推荐
- 使用Node.js手撸一个建静态Web服务器,内部CV指南
文章里有全部代码,也可以积分下载 操作步骤如上图 文章结束 话说这个键盘真漂亮~~ 文章目录 使用Node.js手撸一个建静态Web服务器 一.动静态服务器的概念 1.1 静态Web服务器概念 1.2 ...
- Goroutine 并发调度模型深度解析之手撸一个高性能 goroutine 池
文章目录 1 前言 2 Goroutine & Scheduler 2.1 线程那些事儿 2.1.1 用户级线程模型 2.1.2 内核级线程模型 2.1.3 两级线程模型 2.2 G-P-M ...
- 《动手学ROS2》3.6手撸一个节点C++版
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 3.5 手撸一个C++节点 作 ...
- 很多小伙伴不太了解ORM框架的底层原理,这不,冰河带你10分钟手撸一个极简版ORM框架(赶快收藏吧)
大家好,我是冰河~~ 最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernate这种ORM框架,它们是如何实现的 ...
- 怎么开发一个npm包
一.注册npm账号 * 怎么将代码提到github,大家都知道需要一个github账号 * 同样,开发一个npm包,当然也需要一个npm账号,将npm包发布到npm的托管服务器 * 注册地址:[htt ...
- .Net Core手撸一个基于Token的权限认证
说明 权限认证是确定用户身份的过程.可确定用户是否有访问资源的权力 今天给大家分享一下类似JWT这种基于token的鉴权机制 基于token的鉴权机制,它不需要在服务端去保留用户的认证信息或者会话信息 ...
- 五分钟,手撸一个Spring容器!
Spring是我们最常用的开源框架,经过多年发展,Spring已经发展成枝繁叶茂的大树,让我们难以窥其全貌. 这节,我们回归Spring的本质,五分钟手撸一个Spring容器,揭开Spring神秘的面 ...
- javascript实现图片轮播_手撸一个简易版轮播图(上)
手撸一个简易版轮播图 实现原理,通过控制 swiper-warpper 容器的定位来达到切换图片的效果. 页面布局 简易版轮播图 < > 页面样式 .container{width: 60 ...
- php 六边形 属性图 能力数值图,详解基于 Canvas 手撸一个六边形能力图
一.前言 六边形能力图如下,由 6 个 六边形组成,每一个顶点代表其在某一方面的能力.这篇文章我们就来看看如何基于 canvas 去绘制这么一个六边形能力图.当然,你也可以基于其他开源的 js 方案来 ...
最新文章
- linux中的ln属性,linux 常用基础命令 ln 详细介绍
- [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
- 【Java】 Java网络编程总结
- 撒花!吴恩达《Machine Learning Yearning》英文版完结!
- python顺序结构实验设计_实验二 顺序结构程序设计(验证性实验)
- EntityFramework进阶(三)- 根据IQueryable获取DbContext
- Java 8 Friday:使用Streams API时的10个细微错误
- oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
- 如何在网中使用百度地图API自定义个性化地图
- laravel 5.2 Auth用户认证教程
- Javascript定义类(class)的三种方法
- 你不可不知的HTML优化技巧
- XCTest+XCTool
- disc性格测试cs适合职业_DISC职业性格测试
- 小程序中点击二维码图片预览、长按转发、保存、识别图中二维码
- 2 Python数据分析 Tushare双均线与金叉死叉日期 Pandas数据清洗 级联操作 合并操作
- 超低功耗 无线测温模块 无线测温系统, 待机数年无需更换电池
- 穷和尚与富和尚的故事
- 《软件工程》课程获奖感言
- 渝粤题库 陕西师范大学 《法语》作业
热门文章
- php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
- EEMD算法的基本原理
- UE4全景插件Nvidia Ansel Photography
- 不用车载传感器,也能L4级自动驾驶?清华百度联手发布全球首个纯路侧感知自动驾驶方案...
- 戴森最新吸尘器,竟用上了无人车和宇宙飞船黑科技
- 内存256KB设备也能人脸检测,微软提出用RNN代替CNN | NeurIPS 2020
- NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
- 代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
- jquery easyui的应用-2
- TensorRT学习笔记(三)