前言原文:https://github.com/CodeLittlePrince/blog/issues/8公司成长,团队成长,自然会产生各种产品,也就是各种项目。而且我们知道每个项目其实都有很多可以复用的通用代码。当然,每个人都讨厌复制粘贴这种重复性的工作,也有操作失误的情况。所以很多时候,比如常用的功能封装、正则化、组件等,都可以做成npm模块发布在npm上,方便所有项目使用。基本命令和操作我就不介绍了。材料太多了。当然还是最推荐官方教程。教程地址点我>>。然后,找了一篇掘金的文章作为补充,npm-ReferenceManual>>。管理在制作自己的模块之前,不得不说一下如何管理模块工程。npm本身不具备版本管理的能力,我们发布什么,npm上就有什么。所以,很明显,我们需要Git来管理我们的npm模块。在团队工作时,如果多人维护一个npm模块,npmpublish的权限只能由一??个人建议,比如创建模块的人,暂且称他为Tom。其他人,包括Tom,先把模块的所有修改推送到Git,然后Tom来做代码审查。当Tom觉得OK没有问题的时候,merge代码,然后npmpublish到npm。综上所述,我们通过这两点来管理:git单人npmpublish实现接下来,我们从0开始,一步步实现我们的npm模块。在这个过程中,我们会遇到webpack配置,读者不用着急了解webpack部分,大家还是多关注npm吧,不过如果大家对webpack配置感兴趣或者有疑问,可以评论留言.OK,开始吧~1.创建一个git项目这里我们选择github,先创建一个项目:然后clone代码到本地。.├──README.md└──package.json2.初始化npmnpminit依次输入包名、版本、描述、git仓库等。有两点需要注意:如果包名是公共模块,取一个唯一的名字即可。如果我们要创建一个私有模块(基本上每个稍大一点的公司团队都有一个私有的npm模块),那么以@开头,然后是公司名或者团队名,然后用/来分隔,最后连接到模块名,比如@xkeshi/utils,然后只有加入这个私有项目的成员才有权限npm安装@xkeshi/utils包。其实public和private的区别,即public和private,在文章开头的“基础”部分推荐的教程中也有明确的说明。gitrepository填写github项目地址(默认)。让我们继续。一路按照npm提示填写信息后,我们会生成一个package.json,里面就是我们刚才填写的信息。3.创建入口文件在npminit的时候,在填写入口点的时候,如果我们选择默认值,它是index.js。然后在根目录下创建一个index.js。4.写两个函数先新建一个文件夹,添加src,然后在里面新建两个文件夹,第一个叫mathematic,里面封装了一些数学函数;第二个称为正则表达式,其中包含一些常用的正则规则。目录结构为:├──README.md├──index.js├──package.json└──src├──mathematic│├──README.md│└──index.js└──regex├──README.md└──index.js具体的数学和regex代码就不介绍了。项目地址会附在文末,读者可自行查看。5.创建示例我们怎么知道我们写的东西是否有问题?或者说,用户怎么知道他要使用的东西是否能够满足他的期望?因此,例子是必不可少的。具体代码略过,项目地址见文末。6.Webpack的问题又来了。其实我们写的util使用的是es6甚至es7的语法,浏览器是无法执行的。于是只好用babel编译,又因为js模块化的需要,自然加了webapck。webpack和babel的配置就不多说了。7.添加.npmignore我们的npm包里面有webpack的配置文件,examples,还有node_modules,这些我们其实并不想要。因此,我们可以使用.npmignore来忽略npmpublish时不需要的文件。8.提交代码到github代码都写好了,运行测试没有问题后,push到github。9、发布自己的npm在这之前,你要先注册npm,然后npmlogin,最后发布npmpublish。项目地址文章中,项目github地址在这里:https://github.com/CodeLittlePrince/kuro-util文章中项目npm地址在这里:https://www.npmjs.com/package/kuro-效用
