前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM

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

作者头像
xing.org1^
发布2020-11-24 12:07:50
9220
发布2020-11-24 12:07:50
举报
文章被收录于专栏:前端说吧前端说吧

(十) 组件包发布到NPM

配置package.json

本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。 而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:

代码语言:javascript
复制
{
  "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官网搜索一下,没有重名的包才能发布成功,否则后期不能发布。

image.png
image.png

image.png

当前文件下打开CMD

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

删除淘宝镜像

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

代码语言:javascript
复制
npm config delete registry
image.png
image.png

image.png

NPM注册or登陆账号

adduser

或者用该命令方式注册:

代码语言:javascript
复制
npm addUser

我的账号:xing.org1 我的密码:******** 我的?:outlook邮箱 (据说搜狐邮箱不行,可能没充钱?)

image.png
image.png

login登陆

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

代码语言:javascript
复制
npm login

同上:

image.png
image.png

版本信息查看

代码语言:javascript
复制
npm version

版本管理——版本提升

代码语言:javascript
复制
npm version “xxx” # xxx特别说明如下

xxx 为具体可用命令

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

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

代码语言:javascript
复制
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 patchpackage.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 minorpackage.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 minorpackage.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仓库

效果如图:

image.png
image.png

** 执行版本提升命令前,会检查git仓库树是否全部提交,如果没有将不成功:

image.png
image.png

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

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

发布命令

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

代码语言:javascript
复制
npm publish

偶no!果然报错了!说我package.json里的private属性不符合开源协议吧,需要将之删除。

image.png
image.png

修改了package.json,还需要提交git仓库,清空暂存树。

发布成功?

image.png
image.png

image.png

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

来个全家福?

image.png
image.png

image.png

来个正脸照?:

image.png
image.png

image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置package.json
  • 包名检查
  • 当前文件下打开CMD
  • 删除淘宝镜像
  • NPM注册or登陆账号
    • adduser
      • login登陆
      • 版本信息查看
      • 版本管理——版本提升
        • xxx 为具体可用命令
          • 各命令操作明细表
            • 升级版本与git仓库
            • 发布命令
            • 发布成功?
              • 来个全家福?
                • 来个正脸照?:
                相关产品与服务
                命令行工具
                腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档