npm包发布与迭代

npm adduser

# 设置npm镜像仓库
npm config set registry https://registry.npmjs.org 

# 添加用户到.npmrc文件
npm adduser [--registry=url] [--scope=@orgname] [--always-auth] [--auth-type=legacy]

# 查看登录用户
npm whoami

npm pack

开发npm包,经过build之后需要测试,通过npm pack之后,就会在当前目录下生成一个tgz文件,可把该文件拷进项目进行测试,测试无误后可放心publish了

npm publish

npm publish [<tarball>|<folder>][--tag <tag>] [--access <public|restricted>][--otp otpcode] [--dry-run]
# 指定仓库发布
npm publish --registry=https://registry.npmjs.org/ 

# 发布有命名空间的包
npm publish --access=public
# 当你的包是以你的usename为命名空间,譬如:@salone/watermaker,npm会认为这个包是私有的,当你npm publish时会报错,这是要附上--access=public告诉npm这个包是以开放包发布的即可。
# (仅仅当发第一个版本时会要求带access=public;当npm仓库中已经存在了这个包,日常更新版本无需加access)

打包文件内容

npm publish/pack 的时候会把项目目录里面所有的文件都打包进去, 但是往往有一部分目录和文件不想发布上去,比如项目的源码、编译脚本等等信息。如何发布用户需要使用的相关文件呢?

  • 使用.gitignore设置忽略文件

    **.gitignore 设置的忽略文件,在git代码管理和 npm publish **都会被忽略

  • 使用.npmignore设置忽略文件

    .npmignore 的写法跟 .gitignore 的规则完全一样。若同时使用了 .npmignore.gitignore,只有 .npmignore 会生效,优先级比较高。

  • package.jsonfiles字段设置包含文件

    直接在 package.jsonfiles 字段设置发布哪些文件或目录。这个优先级高于 .npmignore.gitignore

选择哪种方法,根据自己的需求而定。一般情况,使用方法三。

默认忽略文件:

.*.swp
._*
.DS_Store
.git
.hg
.npmrc
.lock-wscript
.svn
.wafpickle-*
config.gypi
CVS
npm-debug.log
node_modules/
package.json 中main字段配置的文件(入口文件)

默认包含文件

默认被包含, 即便设置忽略也无效

package.json
CHANGELOG
README
LICENSE
入口文件

实例

{
  "name": "watermaker_shaoalong",
  "version": "1.0.8",
  "description": "",
  "main": "watermaker.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "release": "node ./config/release.js test"
  },
  "author": "shaoalong",
  "license": "ISC",
  "publishConfig": {
    "registry": "https://registry.npmjs.org" // npm发布仓库
  },
  "files": [ // 文件要包含的文件。如果不设置该字段,会把所有文件都打包进去
    "dist" // 只要dist目录下的文件
  ],
  "devDependencies": {
    "fs-extra": "^10.1.0",
    "inquirer": "^8.2.4",
    "semver": "^7.3.7",
    "standard-version": "^9.5.0"
  },
  "dependencies": {
    "@shaoalong/test": "0.0.1"
  }
}

changelog

standard-version

我们就可以使用 standard-version 进行版本管理自动化,包括更新 CHANGELOG.md,以及使用 git tag。它也会自动修改 package.json 里的 version。

semver

Semver是一个专门分析Semantic Version(语义化版本)的工具

可借助semver对版本号做约束和处理

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s-alone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值