光速上手,教你上传自己的npm包

        npm(Node Package Manager),一个Node的包管理器,平时我们常用的公共模块(插件)或者叫做包大多都放在上面,所以接下来要封装的插件,我们就简单称它为npm包,本文从就从这个简单的例子开始,逐步对它进行封装-发布-更新-扩展-使用,进而到得一个相对完整的npm包,下面开始。

npm发布包步骤:

1.注册npm账号,记好账户名、密码和邮箱(邮箱收到邮件后一定要进行验证,否则会报错)

2.npm添加用户或登陆:npm login

 光速上手,教你上传自己的npm包_第1张图片

 # 注意  Password默认不会显示,注意输入正确。

 3.更改npm源

平时我们可能用的是淘宝的镜像路径,毕竟国外npm的速度令人感动,而淘宝的镜像只有下载功能,不支持上传npm包。所以先把npm源改回来,等到发布成功后再改回来。更改命令如下:

nrm use npm      //切换为npm
nrm use taobao   //切换为淘宝

前提是安装好nrm,否则需要执行以下命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

 安装nrm:   nrm安装与配置_Anway12138的博客-CSDN博客_安装nrm

4.制作自己的npm包

  • 在目录下新建一个npm包的文件夹,尽量取得特殊一点,不然很容易很已有的冲突
  • 初始化项目

    在项目根目录下使用一下命令

    npm init
    

    这时终端会提示你输入诸如包名,版本号等信息,如下:

    当然,你可以一路回车下来,或者你使用npm init -y就可以生成默认的package.json文件,效果都是一样的,然后我们得到以下文件,简单说明一下:

    // package.json
    {
      "name": "toupper-case-project",  // 包名称,默认和你文件夹同名,可改,但是需要去npm官网搜素这个名称是否已存在,因为包名不能重复
      "version": "1.0.0",    // 项目默认版本号,可改,如果项目后期更新再发布,则需要修改版本号
      "description": "",     // 项目描述,选填,可利于SEO 
      "main": "index.js",    // 你的包的主要入口路径,就是别人安装了你的包后系统会去这个路径找你的代码
      "scripts": {           // 脚本命令,后面会讲到,现在使用默认的就行
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",          // 作者,选填
      "license": "ISC"       // 许可证,默认即可
    }

  • 编写主文件:index.js(npm init默认的入口文件是index.js,这可以自己定义)

5.发布npm包:npm publish 

在项目根目录下运行npm publish即可发布,顺利的话就直接成功了,当然也可能会遇到问题:

  • 第一个就是权限问题,也许报这样的错误npm ERR! Error: EPERM: operation not permitted,这时候就得使用管路员权限来进行发布了,window + x会看到管理员终端选项,打开这个终端,然后再进行登录,发布即可。

  • 第二个就是名称问题,就是你的包名在npm上已经存在了,所以在package.json中将你的包名改成其他的,这样再发布,应该就没问题了。

发布成功后显示如下:光速上手,教你上传自己的npm包_第2张图片

登陆我们的npm,也可以看到我们发布的包 

到这里,我们发布的第一个npm包就成功了!

 6.更新包

在我们更新包的功能后,需要重新上传更新,

package.json中的版本号进行更改,正常来说加1即可,
"version": "1.0.0"改为"version": "1.0.1"

再运行npm publish就可以直接把新的包覆盖上去。

7.删除已发布的包

  1. 运行 npm unpublish 包名 --force 命令,即可从 npm 删除已发布的包

  2. 注意事项

    • npm unpublish 命令只能删除 72 小时以内发布的包

    • npm unpublish 删除的包,在 24 小时内不允许重复发布

    • 发布包的时候要慎重,尽量不要往 npm 上发布没有意义的包!

你可能感兴趣的:(node.js,javascript)