npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布
第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 包并发布相关推荐
- PWA入门:手把手教你制作一个PWA应用
摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...
- python k线合成_手把手教你写一个Python版的K线合成函数
手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...
- 自定义view学习-手把手教你制作一个可扩展日历控件
来看看效果图先,手把手教你实现一个简易,但高扩展度的日历控件,可自由扩展成签到,单选,多选日期. 首先我们来分析实现思路.对于上图的效果,很明显是一个6x7的表格. 我们可以两个for循环控制绘制每个 ...
- 手把手教你制作一个简单的聊天机器人(图灵api)
前言:在无聊的时候打打游戏.听听歌还不如来找个人来陪你聊天,今天来教大家制作一个聊天机器人,这样就不会无聊了,在线聊天机器人地址借愁哥哥机器人(可能有点丑,大家将就一下 (
- 手把手教你制作一个带特效的全景图片
一个好的产品才会令人印象深刻,全景图也是这样.这篇文章教你制作一个带特效的全景图片,让你的全景图片"靓"起来. 第一步.准备一张2:1的全景图片.如果不知道全景图是怎么制作的话,可 ...
- jsp循环输出表格_使用 ale.js 制作一个小而美的表格编辑器(1)
今天来教大家如何使用 ale.js 制作一个小而美的表格编辑器,首先先上 gif: 是不是还是有一点非常 cool 的感觉的?那么我们现在开始吧! 这是我们这篇文章结束后完成的效果(如果想继续完成请访 ...
- 手把手教你制作一个文件加密工具
目录 一.前言 二.思路 (1)加密算法的实现 (二)GUI等的实现 三.代码实现 一.前言 现在,互联网上的安全问题越来越严重.我们的文件虽然有杀毒软件保护,但光使用杀毒软件也不是完全安全的.于是, ...
- npm 卸载_手把手教你创建一个NPM包
前言 在前端,基于NodeJs的工程化开发已经是一个很成熟的解决方案,而工程化的构建又离不开诸多便捷又高效的可复用的NPM包,那么这些包是如何制作.发布的呢?今天我们就来研究一下这个问题. ...
- 引入yml依赖包_手把手教你发布 Python 项目开源包
编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...
最新文章
- php的一些基本概念梳理
- MIME 类型(HttpContext.Response.ContentType)列表
- python装饰器函数-python装饰器1:函数装饰器详解
- perl学习:一些字符串操作
- java 年计算_用Java计算leap年
- setscale方法的用法_基于BigDecimal.setScale的用法小结
- iPhoneUI元素的大小
- 自动化电子测试软件,自主开发的MIL测试自动化测试工具
- 在Linux上进行动态注入 | LD_PRELOAD
- vim 全局替换_高效操作:vim 快速删除空行和注释
- CentOS7添加Nginx为系统服务
- [UML]转:UML类图集中关系的总结
- vs编译调试遇到问题
- 浑水摸「YY」、「侠盗」苹果和辛巴的「麦乳精」|极客一周
- Win11磁盘清理怎么没有了?Win11磁盘清理在哪打开?
- 各国iPhone5系列最新裸机价格
- Ubuntu 下同局域网主机访问Tomcat 服务器
- 主成分回归的r语言代码
- php下载pdf并保存图片大小,php根据URL下载图片、压缩包、pdf等远程文件到本地
- QuickBooks 2016 for Mac(财务管理软件)