您可以发布包含package.json文件的任何目录。这里如何首次发布程序包以及如何在以后更新程序包。

如何发布包

制备

了解npm政策

在开始之前,如果您对网站礼仪,命名,许可或其他指南有疑问,最好查看npm的政策。

创建用户帐户

要发布,您必须是npm注册表中的用户。如果您不是用户,请使用 npm adduser 创建帐户。如果您在网站(https://www.npmjs.com/)上创建了用户帐户,请使用npm login从终端访问您的帐户。

**下图显示已登录成功到npm**

测试:

  1. 键入npm whoami从终端看,如果你已经登录(从技术上讲,这也意味着你的证书已经存储在本地)。
  2. 检查您的用户名是否已添加到注册表https://npmjs.com/~username。(username为账户名),例如:

新建项目文件夹并在当前文件夹打开cmd命令,接着输入npm init创建package.json

查看包目录

此时文件夹中会生成一个package.json文件

查看内容

请注意,除非本地.gitignore.npmignore文件忽略该目录,否则将包含目录中的所有内容。要了解如何使用这些命令,请参阅npm-developers

查看package.json文件

阅读使用package.json以确保所需的详细信息反映在您的包中。

选择一个名字

为您的包选择一个唯一的名称。尝试选择一个描述性名称:

  • 还没有其他人拥有
  • 除了拼写错误之外,拼写不会像其他名字一样拼写
  • 不会混淆他人的作者身份
  • 符合npm政策指南。例如,不要将您的包命名为冒犯性的,也不要使用其他人的商标名称。
  • 在package.json文件的相应行中指定名称。

注意:如果您使用范围,则前3个警告不适用。

包含文档(readme.md)

npm建议您包含一个自述文件来记录您的包。自述文件必须具有文件名readme.md。文件扩展名.md表示该文件是markdown文件。当有人找到您的包裹时,此文件将显示在npm网站上。

在开始之前,请查看一些软件包页面,以获取可以添加到自述文件中的信息的想法,并了解为什么这么重要。

  1. 使用任何文本编辑器创建文件。
  2. 将其保存在项目目录中,名称为readme.md
  3. 发布时,此文档将显示在人们下载程序包的网页上。

可以先在有道云笔记上新建一个Markdown文件,编辑完成后再复制到包中替换Readme.md文件

在npm官网上显示readme.md文件如下:

登录npm账号并使用npm publish发布包。

输入npm login;登陆自己的账号,密码,邮箱

测试

去https://npmjs.com/package/<package>。你应该看到一个关于你的新包的页面。它可能看起来像这样:

恭喜!

如何更新包

如何更新版本号

进行更改时,可以使用更新包

npm version <update_type>

其中<update_type>是语义版本控制版本之一,补丁,次要或主要版本。

此命令将自动更改版本号package.json中的version字段值。

此处延伸一下版本号管理的内容:

版本号
语义化版本:https://semver.org/lang/zh-CN/
版本号格式:主版本号.次版本号.修订号
版本号递增规则:
- 主版本号:做了不兼容修改或颠覆式的重写
- 次版本号:向下兼容的功能性新增
- 修订号:向下兼容的问题修正
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

版本号只能增加,禁止下降,代码的修改必须以新版本形式更新;最初版本建议是从v0.1.0开始,0.x.y阶段是基础功能、公众API开发阶段。

1.0.0版本发布时机:
- 被用于正式环境
- 稳定的API被使用者依赖
- 很担心向下兼容的问题

万一不小心把一个不兼容的改版当成了次版本号发行了该怎么办?一旦发现自己破坏了语义化版本控制的规范,就要修正这个问题,并发行一个新的次版本号来更正这个问题并且恢复向下兼容。即使是这种情况,也不能去修改已发行的版本。

npm管理项目版本号
在命令行窗口输入npm version ?可以查看可以使用的命令:
执行命令及版本提升示例:

假设初始版本为0.1.0
➜ xxx git:(master) npm version preminor
v0.1.0-0
➜ xxx git:(master) npm version minor
v0.1.0
➜ xxx git:(master) npm version prepatch
v0.1.1-0
➜ xxx git:(master) npm version patch
v0.1.1
➜ xxx git:(master) npm version prerelease
v0.1.2-0
➜ xxx git:(master) npm version premajor
v1.0.0-0
➜ xxx git:(master) npm version major
v1.0.0

如果使用git进行项目管理,在进行版本提升前,需要将修改内容提交,即commit,然后再执行npm version xxx进行版本提升,版本提升会自动被提交到当前分支中,可以通过git log进行查看。  

注意:如果您已将一个标签与您的npm帐户相关联,那么这也会将更新后的版本号添加到您的git存储库中。

更新版本号后,npm publish再次运行。

测试:转到https://npmjs.com/package/<package>。包裹号码应该更新。

如何更新自述文件

除非发布新版本的软件包,否则不会更新网站上显示的自述文件,因此您需要运行npm version patchnpm publish更新网站上显示的文档。

记一次发布/更新npm包的过程及包版本管理的更多相关文章

  1. 如何发布一个包到npm && 如何使用自己发布的npm包 && 如何更新发布到npm的package && 如何更新当前项目的包?

    如何发布一个包到npm First 在https://www.npmjs.com注册一个账号. Second 编辑好项目,文件大致如下: 其中,gitignore可以如下: .DS_Store nod ...

  2. 利用npm安装/删除/发布/更新/撤销发布包 --社会我npm哥,好用话不多

      一.什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率   1.从社区的角度:把针对某一特定 ...

  3. (转)前端开发-发布一个NPM包之最简单易懂流程

    原文地址:https://www.cnblogs.com/sghy/p/6829747.html 1.npm官网创建npm账户 npm网站地址:https://www.npmjs.com/ npm网站 ...

  4. 创建自己的library类库包并使用webpack4.x打包发布到npm

    创建自己的library类库包并使用webpack4.x打包发布到npm 我们在开发过程中,可能经常要使用第三方类库,比如jquery.lodash等.我们通过npm,下载安装完之后,就可以使用了,简 ...

  5. 如何发布一个npm包(基于vue)

    前言:工作的时候总是使用别人的npm包,然而我有时心底会好奇自己如何发布一个npm包呢,什么时候自己的包能够被很多人喜欢并使用呢...今天我终于迈出了第一步. 前提:会使用 npm,有 vue 基础, ...

  6. 【npm】利用npm安装/删除/发布/更新/撤销发布包

      什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率   1.从社区的角度:把针对某一特定问题 ...

  7. webpack创建library及从零开始发布一个npm包

    最近公司有个需求,我们部门开发一个平台项目之后,其他兄弟部门开发出的插件我们可以拿来直接用,并且不需要我们再进行打包,只是做静态的文件引入,研究一波后发现,webpack创建library可以实现. ...

  8. 通过NPM快速发布你的NodeJS模块(组件包)

    1.更新 NPM - [ npm install -g npm | 该步骤可选:最好使用新版本] 楼主当前版本号 2.6.1 ,如果更新报错,可以尝试 国内淘宝镜像 $ npm -v 2.6.1 // ...

  9. 利用npm安装/删除/发布/更新/撤销发布包

    利用npm安装/删除/发布/更新/撤销发布包 什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率 ...

随机推荐

  1. 一篇文章带你吃透 Docker 原理

    容器的实现原理 从本质上,容器其实就是一种沙盒技术.就好像把应用隔离在一个盒子内,使其运行.因为有了盒子边界的存在,应用于应用之间不会相互干扰.并且像集装箱一样,拿来就走,随处运行.其实这就是 Paa ...

  2. Java实现 LeetCode 826 安排工作以达到最大收益(暴力DP)

    826. 安排工作以达到最大收益 有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益. 现在我们有一些工人.worker[i]是第i个工人的能力,即该 ...

  3. Java实现 LeetCode 806 写字符串需要的行数 (暴力模拟)

    806. 写字符串需要的行数 我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行. ...

  4. Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密

    凯撒密码加密 题目 问题描述 给定一个单词,请使用凯撒密码将这个单词加密. 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文.即a变为d,b变为e,-,w变为z,x ...

  5. Java实现 LeetCode 495 提莫攻击

    495. 提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和 ...

  6. Java实现 LeetCode 454 四数相加 II

    454. 四数相加 II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为 ...

  7. Java实现 LeetCode 400 第N个数字

    400. 第N个数字 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -中找到第 n 个数字. 注意: n 是正数且在32为整形范围内 ( n < 231 ...

  8. Java实现 蓝桥杯VIP 算法提高 士兵排队问题

    算法提高 士兵排队问题 时间限制:1.0s 内存限制:256.0MB 试题 有N个士兵(1≤N≤26),编号依次为A,B,C,-,队列训练时,指挥官要把一些士兵从高到矮一次排成一行,但现在指挥官不能直 ...

  9. Java实现 LeetCode 168 Excel表列名称

    168. Excel表列名称 给定一个正整数,返回它在 Excel 表中相对应的列名称. 例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -&g ...

  10. Java实现 LeetCode 63 不同路径 II(二)

    63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ...