NPM包(模块)发布、更新、撤销发布

栏目: 编程工具 · 发布时间: 5年前

内容简介:这样就把本地仓库和远程仓库关联起来了根据提示输入正确的npm用户名、密码、邮箱,添加完后会默认登录如果没什么问题,应该就发布成功了。可以去npm搜索发布的包: my-test-project,或者去自己的npm账号下查看package
  1. 建项目文件夹 先建一个工程文件夹或者拉取远程git上的已有项目
mkdir my-test-project
复制代码
  1. 初始化git 进入该文件夹,先初始化git(如果还没有的话),用于版本控制。在github(也可以其他)上新建一个与项目同名的远程仓库,并添加README.md文件,拷贝仓库地址,如:
git@github.com:username/test-pro.gitgit init
git remote add origin git@github.com:usename/test-pro.git
git push -u origin master
复制代码

这样就把本地仓库和远程仓库关联起来了

  1. 初始化npm 在项目根目录下即my-test-project目录下执行, npm init ,然后根据提示填写相关信息,有些可以略过后续修改。 要注意的是name字段,有几个点要提醒:
  • 这个是唯一的,不能和npm上所有已有的包重名,否则在publish的时候回会提示权限错误
npm ERR! You do not have permission to publish "my-test-project". 
Are you logged in as the correct user? : my-test-project
复制代码
  • 另外命名也有规范,不能出现下划线、大写字母、空格等字符,可以有连字符(中划线)
  • 先写好index.js文件,作为测试,在里面写几行简单代码,并export一个默认变量

♢ 发布

  1. 先登录npm用户,执行
npm adduser // or npm login
Username: npm-user-name
Password:
Email: your-email
复制代码

根据提示输入正确的npm用户名、密码、邮箱,添加完后会默认登录

  1. 执行
npm publish
复制代码

如果没什么问题,应该就发布成功了。可以去npm搜索发布的包: my-test-project,或者去自己的npm账号下查看package

♢ 关于测试

  1. publish前测试

    在npm init 完成之后,就可以作为一个依赖包供其他模块引用。根据上面的例子,把my-test-project文件夹放入另外的测试工程node_modules文件夹下面,这样就可以跟引入其他模块一样,引入之前在index.js里面export的测试变量,如

    // my-test-project 下的index.js
    const a = 'this is a test'
    export default a // or module.exports = a
    
    // 引用
    import a from 'my-test-project' // or const a = require('my-test-project')
    复制代码

    建议先测试完,没有问题再publish

  2. publish后测试是否有问题

    publish后就更好办了,直接像安装其他模块一样通过npm i 命令安装,然后引用

◈ 更新已发布的包

更新包和发布包的命令是一样的,更新包只需修改package.json里面的version字段,也可以使用npm 自带的版本控制命令修改版本号,更新的步骤为:

  1. 修改版本号
  2. npm publish

♢ npm version

npm 提供官方提供了npm version来进行版本控制,其效果跟手动修改package.json里面的version字段是一样的,好处在于,可以在构建过程中用 npm version 命令自动修改,而且具有语义化即 Semantic versioning .

npm version [<newversion> | major | minor | patch | premajor | preminor | 
prepatch | prerelease | from-git]
复制代码

其语义为:

major:主版本号(大版本)
minor:次版本号(小更新)
patch:补丁号(补丁)
premajor:预备主版本
preminor: 预备次版本
prepatch:预备补丁版本
prerelease:预发布版本
复制代码

如初始版本为 1.0.0,执行相关类型命令后,对应的语意为:

npm version patch  // 1.0.1 表示小的bug修复
npm version minor // 1.1.0 表示新增一些小功能
npm version mmajor // 2.0.0 表示大的版本或大升级
npm version preminor // 1.1.0-0 后面多了个0,表示预发布
复制代码

可以在当前模块的package.json里面看到相应的版本变化

◈ 撤销发布

由于撤销发布会让把要撤销的包作为依赖的包不能正常工作,所以npm官方对包的撤销是有限制的:

  1. 不允许撤销发布已经超过24小时的包(unpublish is only allowed with versions published in the last 24 hours)
  2. 如果在24小时内确实要撤销,需要加--force参数
  3. 即使撤销了发布的包,再次发布的时候也不能与之前被撤销的包的名称/版本其中之一相同,因为这两者构成的唯一性已经被占用,官方并没有随着撤销而删除

♢ npm unpublish

撤销发布的命令为 npm unpublish

npm unpublish my-test-project
// 报错
npm ERR! Refusing to delete entire project.
npm ERR! Run with --force to do this.
npm ERR! npm unpublish [<@scope>/]<pkg>[@<version>]

// 加 --force参数重新撤销发布
npm unpublish my-test-project --force
npm WARN using --force I sure hope you know what you are doing.
- my-test-project
复制代码

♢ npm deprecate

npm unpublish 的推荐替代命令:

npm deprecate <pkg>[@<version>] <message>
复制代码

这个命令,并不会在npm上里撤销已有的包,但会在任何人尝试安装这个包的时候得到deprecated的警告,例如:

npm deprecate my-test-project 'this package is no longer maintained'
复制代码

参考:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

独角兽之路

独角兽之路

三节课产品社区 / 电子工业出版社 / 2016-7 / 79.00元

对2~3年以上经验的互联网人来说,最好的学习可能不是听课,而是分析各类真实的产品和运营案例。而《独角兽之路:20款快速爆发且极具潜力的互联网产品深度剖析(全彩)》正好提供了对滴滴出行、百度外卖、懂球帝、快手App等20款极具代表性的准独角兽产品的发展路径的深度分析。 通过阅读《独角兽之路:20款快速爆发且极具潜力的互联网产品深度剖析(全彩)》,你可以发现互联网产品发展的背后,或许存在着某些共......一起来看看 《独角兽之路》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具