# 如何发布一个npm包?

本文记录发布npm包的经过。

之前想要模仿某脚手架,使用TypeScript写一个自己的脚手架,顺便锻炼一下自己的TypeScript能力,结果搭个开发框架就花了两天,现在总算能发包了。

# 一、发包前准备

  • 一个npm包必须要有一个package.json,这个在初始化的时候使用npm init命令就可以生成。

  • 在根目录下添加.npmignore文件,该文件用于设置一个目录(或者叫黑名单),发布时会忽略目录里的文件。

    比如我们使用TypeScript写的话必须编译成JS使用,那么就可以在发包的时候忽略源码,仅发布编译后的代码。

    # .npmignore 示例
    
    node_modules
    src/
    
    1
    2
    3
    4
  • 必须要有npm账号,需要先注册账号 (opens new window)

忽略规则

  • 如果包的根目录下没有.npmignore文件,将使用.gitignore的配置作为黑名单

  • package.json里面的files字段也可以设置发包时的文件目录,但是它是白名单

  • 优先级:files(白名单) > .npmignore(黑名单) > .gitignore(黑名单)。

# 二、发包

发包主要就两个命令:

npm adduser # 添加用户并登陆
npm publish # 发布
1
2

⚠️注意

如果使用cnpm在开发中安装node_modules的话,就会在生成的package-lock.json中将依赖包的源地址变为淘宝镜像:

https://registry.npm.taobao.org/xxx

就会出现下面的情况,登陆了半天登不上去,然后返回了个500。

package-publish-01

此时要使用以下命令代替:

npm adduser --registry http://registry.npmjs.org
npm publish --registry http://registry.npmjs.org
1
2

发布成功后就会收到npm发来的邮件!包就发成了!!!

WARNING

由于cnpm使用的是镜像源地址,它与npm同步的时间大概是10分钟左右一次,所以我们刚发布的包使用cnpm安装的话大概率找不到包,还是用npm吧。

Last Updated: 2 years ago