您的位置:首页 >财经 >

如何编写一个Gulp插件将unicode转中文

Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。Gulp.js 是基于 Node.js 构建的,利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作。

今天我们将展示如何编写一个Gulp插件,本文中的插件实现了把源码中的中文字符转义为unicode格式。

插件编写准则

在正式编写一个gulp插件之前,推荐遵守如下的指导原则,它们不是强制性的,但是强烈推荐你遵守。

你的插件不应该做一些用现有node模块就能轻松完成的事情你的插件应该只做一件事,并且把它做好。你的插件不应该做其他插件负责的事情你的插件必须经过测试在插件的package.json的keyword字段值中添加gulpplugin,便于搜索找到它你的插件API应该是一个返回stream的函数不要在stream中抛出错误在任何错误前加上插件的名称作为前缀gulp插件的名字应该以”gulp-”作为开头file.contents的类型在插件中传出时和传入时保持一致在完成之前,不要向下游传递file对象拷贝文件或基于文件创建新文件时,使用file.clone()。使用推荐的模块,让插件编写更加容易不要把gulp作为插件的dependency或者peerDependency依赖一个插件是什么样的?

gulp-encode-chinese 插件编写

我们这个插件的设计目标是将JavaScript源码文件中的中文编码为unicode,例如“中文”会被处理为“\u4e2d\u6587”。

首先,我们需要编写一个函数来执行具体的文字替换过程。这里使用了正则表达式的一个新特性“Unicode属性转义”,它会基于unicode字符属性区分字符。对于我们这个例子来说,匹配一个中文汉字的正则表达式是 /\p{Script=Han}/u。\p表示当前使用Unicode属性转义,Script=Han匹配那些script属性是Han(汉字)的字符。

上面的toUnicode函数以一个字符串为参数,会返回一个unicode格式的字符串。

接下来,我们需要把这个函数内嵌到gulp插件模板里。

在上面的插件中,我们采用了 through2这个库以简化插件代码。

一个gulp插件总是会返回stream,它处理的文件是一个 vinyl文件对象。一个Vinyl对象含有2个属性:path和contents。它的contents属性有3种类型:Stream,Buffer和Empty(null)。

在我们的插件中,对于每一种类型都做了对应的处理,所以它是一个功能完备的gulp插件!

总结

本文重点介绍了如何编写一个全功能的gulp插件,它处理了3种Vinyl文件类型并对应做了处理。

在编写一个插件之前,建议先搜索已有的插件库,避免重复发明轮子。对于我们的这个例子而言,其实也可以通过 gulp-replace 这个插件实现所需的功能。不过当你找不到所需的插件想要编写自己的时,希望能帮助到你。

关键词: unicode转中文