如何创建发布NPM包?

前言: 平时我们都是使用的别人写好的npm包, npm i xxx ,就直接安装好了使用,本文章介绍的是如何创建自己的封装好的npm包发布。
  1. npm官网创建npm账户
    npm网站地址:https://www.npmjs.com/

  2. 命令行工具登录npm
    npm login

    验证登录是否成功
    npm who am i如果成功会输入你npm个人信息

    内镜检测:
    npm config get registry 如果输出 http://registry.npmjs.org就配置正确,
    否则要设置镜像npm config set registry http://registry.npmjs.org

  3. 创建npm库
    npm init
    接下来就是一长串表单:

    • 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? 直接回车
      最后生成package.json
  4. 同级目录下新建index.js并编写内容

    exports.sayHello=function(){
        return "Hello.";
    };
    
  5. 发布npm包
    npm publish发布完成会提示
    upload successful

  6. 验证是否发布成功
    npm install xxx包

upload successful

  1. 更新版本
    npm version <update_type> -m "<message>"
    其中update_type 有三种:
    patch增加一位补丁号(比如 1.1.1 -> 1.1.2)
    minor增加一位小版本号(比如 1.1.1 -> 1.2.0)
    major增加一位大版本号(比如 1.1.1 -> 2.0.0)
    比如:
    npm version patch -m "Version %s - v1.0.2"
    最后提交更新的版本:
    npm publish
  2. 撤销自己发布的版本。这只是一个测试的包,最好当然还是撤销下来
    npm --force unpublish test_npm
注: 删除要用force强制删除。超过24小时就不能删除了

上一篇
node版本升级管理 node版本升级管理
升级或降级node,网上找了一大堆的资料,看着头皮发麻,只需两行代码的事情 1. sudo npm install -g n // 安装 2. sudo n v9.10.0 // 升级到某个版本 如:v9.10.0
2019-03-24
下一篇
JS如何优雅的写判断语句(二) JS如何优雅的写判断语句(二)
1.多重判断时使用 Array.includes2.更少的嵌套,尽早 return3.使用默认参数和解构4.倾向于遍历对象而不是 Switch 语句5.对 所有/部分 判断使用 Array.every & Array.some 1.
2019-01-21 丁祖科