40个我们不可或缺的NPM包[译]

原地址:https://medium.com/startup-study-group/40-npm-modules-we-can-t-live-without-36e29e352e3a

npm picture

Croissant按照字母顺序分享了他们用到的40个不可或缺的NPM模块:

agenda

这是一个类似于“cron”的作业,如每隔几分钟做一些事情。

agenda-ui

可视化的界面,用于管理agenda的作业,就像麦当劳的订单界面,让员工知道订单的状态。

async

用于对多个异步一次处理,主要用于异步编程,尽管我们也开始迁移到”q”,但是我们任然在一些地方使用,像“waterfall”和“each”对于一行数据在多数据相互依赖操作,会用到。

aws-sdk

我们用于上传文件到AWS S3上。

bcryptjs

担心你的密码的安全性?不用了!该算法是行业标准。即使我们遭受过黑客攻击,您的密码将仍然只是字母和符号混合的字符串。只要你的密码不是一个简单字典中的单词,虽然,因为如果有人没有得到这个数据,他们可以尝试在字典中的所有单词进行暴力破解。

body-parser

我们使用ExpressJS,所以我们需要序列化那些JSON的响应。

braintree

用于支付的一个智能(支付网关)依赖包。(国内用到不多)

chai

我们使用这个用于集成测试。(一个断言库)

compression

另一个像Express一样,你需要的包。用于压缩服务的响应,让数据在网络上传输更快。好东西。

express

这是个大魔法师。这是一个ExpressJS和NodeJS的web服务的核心模块,让我们可以不用写了大量的样板HTTP服务器代码。带来了一些很酷的特性,如指定一个静态目录作为一个简单的文件服务器,当然,以从它的充满活力的社区,创建的许多插件,可以很容易使用。

forever

如果一个node进程或者express服务崩溃了怎么办?这个小家伙会在后台为你重新启动。这实在是太聪明 - 你可以指定运行多久失败需要重新启动。这可以防止重启一遍又一遍自动失败进程。

fs-extra

当“fs”模块不够用时,“fs-extra”给你想要的更多功能。我们真的只是用它来满足使一个嵌套的文件夹如果在父文件夹不存在创建的能力。出于某种原因,对于“fs”来说,这是过分的要求。

gm

这个模块是一种法术。GraphicsMagick是一个包装已经由来已久的被用于许多图像操纵的很经典ImageMagick的C库。我们使用对上传图片的尺寸缩放和切图操作。你知道的那些放在AWS美丽场馆我们,我们会对它们用这个处理。

gulp

Gulp总是在我们编码背后运行着。它会自动的压缩我们的javascript和css文件。我们把它用于测试运行。它也有很多的包(如果你要找的话)!有人说它像“grunt”,其实是流运行的。

gulp-angular-templatecache

之前我们提到用Angular吗?我们是用Angular的。这个gulp插件允许我们在所有的HTML模板为一个文件以便更快的加载网站。Angular在加载页面时可以使用这些模板。

gulp-concat

记得我们前面谈到的呗?这需要找下。用于合并文件。

gulp-csso

做css最小化的。

gulp-istanbul

一个运行istanbul的单元测试覆盖率的gulp插件。

gulp-livereload

前端开发者的必备,可以连接你的浏览器当每一次文件修改它会刷新页面。做得好,gulp。

gulp-mocha

用于测试,这个插件封装了mocha,我们可以智能的进行测试,就像保证接口端可以正常运行。

gulp-plumber

由于我们所有事情用gulp的流和管道,我们需要一个小小的库,万一像gulp-csso运行失败,可以保证其他运行平滑。

gulp-sass

你以为我们使用CSS? 再想一想。你看到的一切曾经是一个轻量的,顶尖的,SCSS(又名Sass)文件。Gulp 监听和编译每当我们作出改变时编译我们出主要的CSS的输出..超级快!

gulp-uglify

最后但并非最不重要的,这一插件确实不错的压缩前端JavaScript代码,所以我们可以超快速和超安全传输给你。

jwt-simple

JWT(JSON Web Token) 编码和解码的node包.

lodash

有用的Javascript的工具集,pick, omit, contains对于接口服务器响应时间大大缩短。

mime-types

用于跟踪文件扩展名的库,一个jpg图片文件得到的结果如“image/jpeg”。

mocha

mocha是一个测试平台,可以使用BDD的方式测试,使用“describe”和“it”,没有比这更简单的Javascript的测试了。

moment

人性化的时间格式。

moment-timezone

moment的时区转化

mongoose

我们提到我们用MongoDB的?我们使用MongoDB的。Mongoose一直我们的团队所熟知,让我们总能看到一眼我们的数据结构是什么。没有它,你可能最终与各种数据库中的对象,造成谁知道什么样的混乱的后端和前端的。

morgan

express的http的访问日志中间件。

newrelic

New Relic是一家给你的应用提供信息的很酷的公司。你可以很简单的加一个包到你服务的第一行,然后去他们的网站观察神奇的事情发生。我们使用它来获取在产品化的服务上发生的错误。

nodemailer

如果你需要发邮件,不需要你自个发-使用一个邮件传输服务,就像SendGird。这个有一些很好的特性,就像给邮件封装一个漂亮的模板。Nodemailer就是一个让我们发生简单信息到SendGird的包。

prerender-node

还记得我们是用Angular吗?这个是用于因为搜索引擎无法解析Angular才用的。带来了陈显的援助,使用这个包,网络爬虫可以更容易的看到一个不是Angular版本的网站因为prerenderer让它发生变化。关闭JavaScript在Web浏览器您再次浏览Croissant,你就会明白我们的意思。

protractor

protractor是一个端对端的测试框架,可以在浏览器里面进行自动化的执行任务和测试

q

async是不错的瀑布楼和映射操作同时,“q”是不错的使用promises的库,通过它,我们意味着使用普通回调函数以及封装成“q”的promise语法。让我们像使用普通回调方式一样使用链式的异步函数,解决“callback hell”。

request

每当一旦我们需要使用http请求来扩展服务时,我们总是使用这个包即时在NodeJS初期,在内部使用扩展服务。

slug

这个是一个转化“Hello There” 到“hello-there”的库,完美的动态的转化标题成友好的链接。

stripe

值得时间考验。Stripe是我们的信用卡支付流程。这个足够好来存储用户的信用卡信息以PCI-compliant方式。我们使用它们的SDK存储卡到文件和支付。

supertest-as-promised

这个是我们核心的智能测试。使用promises让我么会能很容易导出某种响应状态码,同时使用响应数据在下一次测试中,我们在chai里使用。

这样啦,你有了我们的好东西的清单。我们总是会开放的问题,意见和建议。请友善些:)

Dave
Co-founder & CEO, Croissant