转发npm发布包的过程
老板,来个npm账号!
因为你的包是要放在npm上的,所以,没有npm的账号,根本什么活都干不了。
在npm上注册一个账号是很简单的,随便填一下用户名密码邮箱,然后人家就会发个邮件给你,然后就注册成功了。。。这个是我注册后的样子:
![](http://upload-images.jianshu.io/upload_images/2812131-19c0f7ac729fa891.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
有了账号之后,你就可以执行
npm publish
这个操作了。不过,还没完。上面这些基本上都是凑字数的,接下来才是真正的教程。。。。
npm init
选择一个文件夹,然后用命令行cd
进去,如图所示:
![](http://upload-images.jianshu.io/upload_images/2812131-aacfcd9b4a8e6dd3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
然后,执行
npm init
,如图所示:
![](http://upload-images.jianshu.io/upload_images/2812131-44adb3cf66d7c09f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
接下来就是一长串表单:
- name:填写你这个包的名字,默认是你这个文件夹的名字。不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入
npm install 你要取的名字
,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。 - version:你这个包的版本,默认是1.0.0
- description:
其实我也不知道是什么,按回车就好了。。。,这个用一句话描述你的包是干嘛用的,比如我就直接:‘a plugin for express.register routes base on file path’ - entry point:入口文件,默认是
Index.js
,你也可以自己填写你自己的文件名 - test command:测试命令,这个直接回车就好了,因为目前还不需要这个。
- git repository:这个是git仓库地址,如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的
.git
目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。 - keyword:这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。我这个包嘛,第一是在
express
下工作的,然后又是一个插件plugin
,然后又是一个注册路由route
用的,而这个路由又是基于文件目录dir
,所以很好就得出我的包的索引关键字。 - author:写你的账号或者你的github账号吧
- license:这个直接回车,开源文件来着。。。
然后它就会问你Are you ok?
Paste_Image.png
回车Ok!
然后我们回到我们的文件目录里面去看一看,发现多出来一个package.json
文件,点进去基本上就是上面这张图输出的信息。
然后,在目录下新建一个index.js
文件,或者你刚才修改了那个entry point
的值,那么你这个文件名也跟着改为那个值。
就像这个样子:
![](http://upload-images.jianshu.io/upload_images/2812131-e0c8ccb96fb3b781.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/630)
因为我把封装好的代码都扔在
lib
里面,所以,index.js里面也就一句话:
module.exports=require('./lib')
不要问我为什么要这么做,因为你npm install
其他包的时候,其他包里面的也是这样写的。。。。
然后,最重要的,写好README.md,一个给大家描述你的包的markdown文件,如果大家都不知道你的代码是做什么的,会有人去下载你的代码吗?哦,对了,最好写英文。我这里写了一套英文版的使用文档和一套中文版的使用文档。
然后,npm init
的工作做完了。
接下来就是:用npm命令登陆一下:
![](http://upload-images.jianshu.io/upload_images/2812131-c9bcb88f12677c37.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/641)
如果你对password是空的感到疑惑的话,不用紧张,命令行输入密码是不会显示的。
然后,在你的目录下使用
npm publish
就像这样:
![](http://upload-images.jianshu.io/upload_images/2812131-c3605111d4ae18c6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
这里因为我已经发布过了,而且version版本没有改变,所以这里npm会给我报错。一般情况下,一旦你要修改你已经发布后的代码,然后又要执行发布操作,务必到package.json里面,把version改一下,比如从1.0.0改为1.0.1,然后在执行
npm publish
,这样就可以成功发布了。
看看我们发布的包
这里先使用npm install 你发布出去的包的名字
,然后看看命令行里面是不是把你的包下载了下来。如果下载成功,就说明你的包已经成功地发布在npm上了。
或者你亲自上npm这个网站(该带梯子的请自带梯子),然后在搜索框里面输入你刚才写下来的关键字。。。不过,如果你的包的星星(点赞)数量不够的话应该会排到很尾。。。所以我建议你用包名直接搜(反正我用关键字找找不到我的包。。。):
![](http://upload-images.jianshu.io/upload_images/2812131-5309e2f2aaca20f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
看,第一个就是我发布的包。。。短短四天时间内已经57星了。。。。
就这样啦。。。
======2016-12-2 14:44:29补充==========
对了,忘记说了一件事,就是有关于测试npm包的问题。
在你执行完npm init
这个步骤之后,你把代码扔进这个包里面后,就形成了一个本地的包,可以直接把这个包扔到项目里面node_module这个文件夹里面的,然后在你的项目里面就可以直接:
var a=require('你的包名');
直接使用包名引入,不用文件路径了,就像引入fs或者http模块一样
测试完确定没有什么bug之后再执行npm publish
哦
作者:CharTen
链接:https://www.jianshu.com/p/36d3e0e00157
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。