发包成功啦!开心~



(十) 组件包发布到NPM


配置package.json

本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。

而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:

{  "name": "xingorg1-ui", # 组件库名称  "version": "1.0.0", # 版本号(下边讲述自动进行版本提升)  "description": "A Component Library for Vue3.js.",  # "private": true, # 这个要删掉,不然发布不了  "main": "./dist/xingorg1.umd.min.js", # 引入组件后的入口文件  "files": [ # npm发包白名单,标注哪些会被发布    "dist",    "packages",    "README",   "CHANGELOG",   "LICENSE"  ],  "scripts": {    "dev": "npm run serve",    "serve": "vue-cli-service serve",    "build": "vue-cli-service build --target lib --name xingorg1 ./packages/index.js && vue-cli-service build --xingorg1 --no-clean",    "test:unit": "vue-cli-service test:unit",    "test:ui": "karma start",    "lint": "vue-cli-service lint",    "docs:dev": "vitepress dev docs",    "docs:build": "vitepress build docs"  },  "repository": { # 仓库地址    "type": "git",    "url": "git+https://github.com/xingorg1/xingorg1-ui.git"  },  "homepage": "", # 页面主页(待创建docs后发布到gh-pages  "keywords": [    "xingorg1",    "vue3",    "components"  ],  "author": "guojufeng", # 作者  "license": "MIT", # 开源协议  "bugs": { # bugs地址    "url": "https://github.com/xingorg1/xingorg1-ui/issues"  },  "dependencies": {    "core-js": "^3.6.5",    "vue": "^3.0.2"  },  "devDependencies": {    "@vue/cli-plugin-babel": "^4.5.8",    "@vue/cli-plugin-eslint": "^4.5.8",    "@vue/cli-plugin-unit-mocha": "^4.5.8",    "@vue/cli-service": "^4.5.8",    "@vue/compiler-sfc": "^3.0.2",    "@vue/eslint-config-prettier": "^6.0.0",    "@vue/test-utils": "^2.0.0-beta.7",    "babel-eslint": "^10.1.0",    "babel-plugin-component": "^1.1.1",    "chai": "^4.2.0",    "eslint": "^6.8.0",    "eslint-plugin-prettier": "^3.1.4",    "eslint-plugin-vue": "^7.1.0",    "html-webpack-plugin": "^4.5.0",    "karma": "^5.2.3",    "karma-chai": "^0.1.0",    "karma-chrome-launcher": "^3.1.0",    "karma-mocha": "^2.0.1",    "karma-sourcemap-loader": "^0.3.8",    "karma-spec-reporter": "0.0.32",    "karma-webpack": "^4.0.2",    "lint-staged": "^9.5.0",    "mocha": "^8.2.0",    "prettier": "^1.19.1",    "sass": "^1.28.0",    "sass-loader": "^8.0.2",    "vitepress": "^0.7.1"  },  "gitHooks": {    "pre-commit": "lint-staged"  },  "lint-staged": {    "*.{js,jsx,vue}": [      "vue-cli-service lint",      "git add"    ]  },  "engines": { # 环境与版本要求    "node": ">=8.9.1",    "npm": ">=5.5.1"  },  "browserslist": [ # 浏览器支持    "last 3 Chrome versions",    "last 3 Firefox versions",    "Safari >= 10",    "Explorer >= 11",    "Edge >= 12",    "iOS >= 10",    "Android >= 6"  ]}

包名检查

为了防止你package.json里配置的name属性值(也就是包名)已经存在于市面上,所以需要先去​​NPM官网​​搜索一下,没有重名的包才能发布成功,否则后期不能发布。

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_jsonimage.png

当前文件下打开CMD

待发布的文件包根目录下,打开命令行工具。

删除淘宝镜像

去掉npm的淘宝镜像,因为发包是要发到npm上,而不是发到npm的淘宝镜像上:

npm config delete registry

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_vue-next_02image.png

NPM注册or登陆账号

adduser

或者用该命令方式注册:

npm addUser

我的账号:xing.org1

我的密码:********

我的????:outlook邮箱 (据说搜狐邮箱不行,可能没充钱?) 【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_组件库_03

login登陆

login是addUser的一个别名,也可以使用下边的命令

npm login

同上:

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_版本号_04

版本信息查看

npm version

版本管理——版本提升

npm version “xxx” # xxx特别说明如下

xxx 为具体可用命令


  • major: 主版本号
  • premajor: 预备主版本
  • minor: 次版本号
  • preminor: 预备次版本
  • patch: 修订号
  • prepatch: 预备修订版
  • prerelease: 预发布版本

比如想升级一个此版本号,执行命令

npm version minor

各命令操作明细表


help

npm version --help

version命令概览

version

npm version

查看当前包的详细版本信息

prerelease

npm version prerelease

package.json 中的版本号1.0.0变为 1.0.1-0

再次使用npm version prerelease

prerelease增版本号+1,变成1.0.1-1

当执行npm version prerelease时,如果没有预发布号,则增加minor,同时prerelease 设为0;

如果有prerelease,则prerelease 增加1。

所以第一次搞预发布版本,得先有预发布号

prepatch

npm version prepatch

package.json 中的版本号1.0.1-1变为 1.0.2-0

prepatch - 直接升级小号,增加预发布号为0。

如果没有prerelease,则自动增加prerelease版本号为0

如npm version prepatch  版本号3.0.0 变为 3.0.1-0

preminor

npm version preminor

package.json中的版本号1.0.2-0变为 1.1.0-0

preminor - 直接升级中号,小号置为0,增加预发布号为0

如果没有prerelease,则自动增加prerelease版本号为0

如npm version premajor  版本号1.1.0 变为 2.0.0-0

premajor

npm version premajor

package.json 中的版本号1.1.0-0变为 2.0.0-0

premajor - 直接升级大号,中号、小号置为0,增加预发布号为0。

如果没有prerelease,则自动增加prerelease版本号为0

如npm version premajor  版本号2.1.0 变为 3.0.0-0

patch

npm version patch

package.json 中的版本号2.0.0-0变为 2.0.0

再次执行npm version patch

package.json 中的版本号2.0.0变为 2.0.1

patch:

- 如果有prerelease ,则去掉prerelease ,其他保持不变

- 如果没有prerelease ,则升级patch

minor

npm version minor

package.json 中的版本号3.0.1-0变为 3.1.0

再次执行npm version minor

package.json 中的版本号3.1.0变为 3.2.0

minor:

- 如果有prerelease ,则去掉prerelease ,其他保持不变

- 如果没有prerelease,直接升级minor, 同时patch设置为0

major

npm version major

package.json 中的版本号3.1.0-1变为 4.0.0

再次执行npm version minor

package.json 中的版本号4.0.0变为 5.0.0

major

- 如果没有prelease,则直接升级major,其他位都置为0;

- 如果有预发布号: minor和patch都为0,则将prerelease 去掉,升级major。这里升不升级主版本号?待测试

- 如果有预发布号:且minor和patch有任意一个不是0,则升级一位major,其他位都置为0,并去掉prerelease。

如:5.1.0-0 -->6.0.0

升级版本与git仓库

效果如图: 【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_版本号_05 ** 执行版本提升命令前,会检查git仓库树是否全部提交,如果没有将不成功: 【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_json_06

只有清空暂存区后,该系列命令才会生效。 版本提升后,package会自动修改,且自动commit,好神奇! 然后我就直接push代码就行了。

代码提交干净了,发版时刻终于来啦!????一切顺利~

发布命令

版本修改成功后,执行命令进行发布

npm publish

偶no!果然报错了!说我package.json里的private属性不符合开源协议吧,需要将之删除。 【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_版本号_07 修改了package.json,还需要提交git仓库,清空暂存树。

发布成功????

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_xingorg1-ui_08image.png

现在再去NPM搜索包名就已经有啦!哈哈哈哈哈哈哈哈!!!

来个全家福????

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_vue-next_09image.png

来个正脸照????:

【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM_vue-next_10image.png

越努力,越幸运;阿门。