第1步:npm账户

你需要一个 npm 账户,如果米有,注册地址是:npmjs.com/signup

第2步:登录

进入你自己电脑的终端(cmd)并输入:

npm adduser

也可以使用以下命令:

npm login

选择你喜欢的命令即可。您将得到一个提示,输入您的用户名密码电子邮件。类似于这个的信息:

Logged in as bamblehorse to scope @username on https://registry.npmjs.org/.

我们做个 npm 吧

首先我们需要一个文件夹来保存我们的代码。以任何你觉得舒服的方式创造一个。我叫我的包裹很小,因为它真的很小。我为那些不熟悉它们的人添加了一些终端命令。

md tiny

在该文件夹中,我们需要一个package.json文件,它包含关于您的项目的信息,并且有很多不同的选项。在本教程中,我们将只关注其中的两个。

cd tiny && touch package.json

不过,它到底能有多少大小呢?

真的很小。

所有关于制作npm包的教程,包括官方文档,都告诉您在package.json中输入某些字段。我们会尽可能少地发布我们的包,直到它生效。这是一种最小npm包的TDD。

请注意:我给你看这个是为了证明制作一个npm包不复杂。

发布:首次尝试

要发布npm包,可以运行命名良好的命令:npm publish。因此,我们的文件夹中有一个空package.json,我们尝试:

npm publish

我们发现一个错误:

npm ERR! file package.jsonnpm ERR! code EJSONPARSEnpm ERR! Failed to parse jsonnpm ERR! Unexpected end of JSON input while parsing near ''npm ERR! File: package.jsonnpm ERR! Failed to parse package.json data.npm ERR! package.json must be actual JSON, not just JavaScript.npm ERR!npm ERR! Tell the package author to fix their package.json file. JSON.parse

发布:第二次失败

让我们在package.json文件中为包命名:。

{"name": "@bamlehorse/tiny"}

你可能已经注意到我在开头添加了npm用户名。

那是怎么回事?

通过使用名称@bamblehorse/tiny而不仅仅是tiny,我们在用户名的作用域下创建了一个包,它被称为作用域包。它允许我们使用可能已经使用的短名称,例如npm中已经存在的小程序包。您可能已经在流行的库中看到了这一点,比如来自Google的Angular框架。它们有一些作用域包,比如@angular/core@angular/http

很酷吧?

我们将再次尝试发布:

npm publish

这个时间进程的错误更小。

npm ERR! package.json requires a valid “version” field

每个npm包都需要一个版本,以便开发人员知道他们是否可以安全地更新到包的新版本,而不会破坏其他代码。npm使用的版本控制系统称为semver,它代表语义版本控制

不要太担心理解更复杂的版本名,下面是它们对基本版本名工作原理的总结:

给定版本号 MAJOR.MINOR.PATCH, 增加:

1.进行不兼容的API更改时的主要版本

2.以向后兼容的方式添加功能时的MINOR版本

3.修正向后兼容错误时的补丁版本。

预发布和生成元数据的其他标签作为MAJOR.MINOR.PATCH格式的扩展提供。

https://semver.org

发布:第三次尝试

我们将给出package.json的版本:1.0.0—第一个主要版本。

{"name": "@bamblehorse/tiny","version": "1.0.0"}

我们发布吧!

npm publish

糟糕

npm ERR! publish Failed PUT 402npm ERR! code E402npm ERR! You must sign up for private packages : @bamblehorse/tiny

请允许我解释一下。

作用域包是自动私下发布的,因为除了对像我们这样的单个用户有用外,公司还利用它们在项目之间共享代码。如果我们发布了一个正常的包,那么我们的旅程就到此结束。

我们只需要告诉npm,实际上我们希望每个人都使用这个模块,而不是把它锁在他们的保险库里。因此,我们运行:

npm publish --access=public

报错了!

+ @bamblehorse/tiny@1.0.0

我们收到一个加号,包裹的名字和版本。我们做到了-我们在npm俱乐部。我很兴奋。你一定很兴奋。

让我们重新组合

如果我们想作为一个开发人员被认真对待,我们希望我们的包被使用,我们需要向人们展示代码并告诉他们如何使用它。一般来说,我们通过将代码放在公共的地方并添加一个自述文件来实现这一点。

我们还需要一些代码。说真的,我们还没有代码。GitHub是放置代码的好地方。让我们创建一个新的存储库。

README

这里你需要简单介绍你的 npm 包是什么用处,以及如何操作的。我贴出我的 README:

代码许可证

许可证只是让人们知道在什么情况下他们可以使用你的代码,有很多不同的数据。

在每个GitHub存储库中都有一个很酷的名为insights的页面,您可以在其中检查各种统计数据,包括项目的社区标准,我将从那里添加我的许可证:

然后点击此页:

代码

我们添加简单的实例代码:

module.exports = function tiny(string) {  if (typeof string !== "string") throw new TypeError("Tiny wants a string!");  return string.replace(/s/g, "");};

tiny()函数用于删除字符串中的所有空格。

因此npm包只需要一个index.js文件。这是你包裹的入口。当你的软件包变得更加复杂时,你可以用不同的方法来完成它。

我们可能应该更新minimal package.json并在readme.md中添加一些指令。否则没人会知道如何使用我们美丽的代码。

package.json

{  "name": "@bamblehorse/tiny",  "version": "1.0.0",  "description": "Removes all spaces from a string",  "license": "MIT",  "repository": "bamblehorse/tiny",  "main": "index.js",  "keywords": [    "tiny",    "npm",    "package",    "bamblehorse"  ]}

我们补充了:

  • description: 对包裹的简短描述。
  • repository: GitHub友好-因此您可以编写用户名/repo。
  • license: MIT in this case
  • main: 相对于文件夹根目录,指向包的入口点。
  • keywords: 用于在npm搜索中发现包的关键字列表。

完成

让我们发布。

版本

首先,我们将使用npm version命令更新版本。

npm version major

哪些输出:

v2.0.0

发布

让我们运行命令:

npm publish

完成:

+ @bamblehorse/tiny@2.0.0

Cool

这是一个很好的总结,你可以开始发布你的 npm 包了!

npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布相关推荐

  1. PWA入门:手把手教你制作一个PWA应用

    摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...

  2. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  3. 自定义view学习-手把手教你制作一个可扩展日历控件

    来看看效果图先,手把手教你实现一个简易,但高扩展度的日历控件,可自由扩展成签到,单选,多选日期. 首先我们来分析实现思路.对于上图的效果,很明显是一个6x7的表格. 我们可以两个for循环控制绘制每个 ...

  4. 手把手教你制作一个简单的聊天机器人(图灵api)

    前言:在无聊的时候打打游戏.听听歌还不如来找个人来陪你聊天,今天来教大家制作一个聊天机器人,这样就不会无聊了,在线聊天机器人地址借愁哥哥机器人(可能有点丑,大家将就一下 (

  5. 手把手教你制作一个带特效的全景图片

    一个好的产品才会令人印象深刻,全景图也是这样.这篇文章教你制作一个带特效的全景图片,让你的全景图片"靓"起来. 第一步.准备一张2:1的全景图片.如果不知道全景图是怎么制作的话,可 ...

  6. jsp循环输出表格_使用 ale.js 制作一个小而美的表格编辑器(1)

    今天来教大家如何使用 ale.js 制作一个小而美的表格编辑器,首先先上 gif: 是不是还是有一点非常 cool 的感觉的?那么我们现在开始吧! 这是我们这篇文章结束后完成的效果(如果想继续完成请访 ...

  7. 手把手教你制作一个文件加密工具

    目录 一.前言 二.思路 (1)加密算法的实现 (二)GUI等的实现 三.代码实现 一.前言 现在,互联网上的安全问题越来越严重.我们的文件虽然有杀毒软件保护,但光使用杀毒软件也不是完全安全的.于是, ...

  8. npm 卸载_手把手教你创建一个NPM包

      前言   在前端,基于NodeJs的工程化开发已经是一个很成熟的解决方案,而工程化的构建又离不开诸多便捷又高效的可复用的NPM包,那么这些包是如何制作.发布的呢?今天我们就来研究一下这个问题.   ...

  9. 引入yml依赖包_手把手教你发布 Python 项目开源包

    编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...

最新文章

  1. php的一些基本概念梳理
  2. MIME 类型(HttpContext.Response.ContentType)列表
  3. python装饰器函数-python装饰器1:函数装饰器详解
  4. perl学习:一些字符串操作
  5. java 年计算_用Java计算leap年
  6. setscale方法的用法_基于BigDecimal.setScale的用法小结
  7. iPhoneUI元素的大小
  8. 自动化电子测试软件,自主开发的MIL测试自动化测试工具
  9. 在Linux上进行动态注入 | LD_PRELOAD
  10. vim 全局替换_高效操作:vim 快速删除空行和注释
  11. CentOS7添加Nginx为系统服务
  12. [UML]转:UML类图集中关系的总结
  13. vs编译调试遇到问题
  14. 浑水摸「YY」、「侠盗」苹果和辛巴的「麦乳精」|极客一周
  15. Win11磁盘清理怎么没有了?Win11磁盘清理在哪打开?
  16. 各国iPhone5系列最新裸机价格
  17. Ubuntu 下同局域网主机访问Tomcat 服务器
  18. 主成分回归的r语言代码
  19. php下载pdf并保存图片大小,php根据URL下载图片、压缩包、pdf等远程文件到本地
  20. QuickBooks 2016 for Mac(财务管理软件)

热门文章

  1. 【转】实用技巧:简单而有用的nohup命令介绍
  2. 如何查询mysql中执行效率低的sql语句
  3. javascript调用服务端验证控件
  4. 十条不错的编程观点(转)
  5. Android Studio 之 Live Templates 使用
  6. 使用XmlPullParser
  7. php模板怎么导入服务器_php项目怎么放到服务器
  8. es 根据_id查询_京东把 Elasticsearch 用得真牛逼!日均5亿订单查询完美解决
  9. 支付页面设计灵感|最美剁手的正确姿势!
  10. 琉璃男主成毅手机壁纸,你要么?