向npm注册中心发布包(上)

目录

1、创建package.json文件

1.1 fields 字段

1.2 Author 字段

1.3 创建 package.json 文件

 1.4 自定义 package.json 的问题

1.5 从当前目录提取的默认值

1.6 通过init命令设置配置选项

2、创建Node.js 模块

2.1 创建一个package.json 文件

2.2 创建在另一个应用程序需要模块时将加载的文件

2.3 测试模块

3、关于包的 README 文件

3.1 创建README.md文件并将其添加到包中

3.2 更新现有包README文件

4、创建和发布无作用域的公共包

4.1 创建无作用域的公共包

4.2 检查包裹内容是否包含敏感或不必要的信息

4.3 测试您的软件包

4.4 发布无作用域的公共包


1、创建package.json文件

您可以将package.json文件添加到您的软件包中,以便于其他人管理和安装。发布到注册表的包必须包含package.json文件。

package.json文件:

  • 列出了项目的所有依赖项
  • 指定包的版本以及语义控制规则
  • 使您的构建具有重复性,因此更容易与其他开发者共享

注意:为了自己的发布的包,能够更容易的在npm官网上找到,建议最好还是在package.json文件中的description字段添加对应的描述信息。

1.1 fields 字段

package.json文件必须包含"name""version"字段。

"name"字段包含包的名称,必须是小写字母,并且可以包含连字符和下划线。

"version"字段必须采用x.x.x格式,并遵循语义版本控制指南。

1.2 Author 字段

如果要在"author"字段中包含软件包作者信息,请使用以下格式(电子邮件和网站都是可选的):

Your Name <email@example.com> (http://example.com)

示例:

{"name": "test_a","version": "1.0.0","description": "this is test package","main": "read_file.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","start": "nodemon read_file"},"author": "zhouxxx<724518201@qq.com>(spacebox.blog.csdn.net) ","license": "ISC","devDependencies": {}
}

1.3 创建 package.json 文件

可以通过CLI命令交互式来创建默认的 package.json 文件。

1、我们可以先创建一个目录,然后再进入该目录

mkdir package
cd /Users/zhou/package

2、运行一下命令:

npm init

3、根据提示,输入对应字段的信息,然后回车进入下一步。

如果创建的 package.json 所有字段,都设置为默认,可以添加参数:--yes

npm init --yes

 1.4 自定义 package.json 的问题

1、在主目录中,创建一个名为.npm-init.js的文件。

2、要添加自定义问题,请使用文本编辑器,使用prompt函数添加问题:

module.exports = prompt("what's your favorite flavor of ice cream, buddy?", "I LIKE THEM ALL");

3、要添加自定义字段,请使用文本编辑器将所需字段添加到.npm-init.js文件:

module.exports = {customField: 'Example custom field',otherCustomField: 'This example field is really cool'
}

1.5 从当前目录提取的默认值

  • name: 当前目录名
  • version: 默认 1.0.0
  • description: 来自README的信息,或空字符串""
  • scripts: 默认创建空test脚本
  • keywords:空
  • author:空
  • license: ISC
  • bugs: 当前目录中的信息(如果存在)
  • homepage: 当前目录中的信息(如果存在)

1.6 通过init命令设置配置选项

您可以为init命令设置默认配置选项。例如,要设置默认作者电子邮件、作者姓名和许可证,请在命令行上运行以下命令:

> npm set init-author-email "example-user@example.com"
> npm set init-author-name "example_user"
> npm set init-license "MIT"

2、创建Node.js 模块

2.1 创建一个package.json 文件

1、创建一个package.json 文件,在命令行中,切换到根目录或者 Node.js 模块,运行 npm init

  • 对于作用域模块作用域模块作用域模块,运行npm init --scope=@scope-name
  • 对于未限定作用域的模块未限定作用域的模块未限定作用域的模块,请运行npm init

2、为必填字段提供响应(name 和 version)以及main 属性

  • name: 模块的名字
  • version: 初始模块版本,建议遵循语义版本控制指南,从1.0.0开始

2.2 创建在另一个应用程序需要模块时将加载的文件

在文件中,添加一个函数作为exports对象的属性。这将使该函数对其他代码可用:

exports.isarray = function(arr) {let toString = {}.toString();return toString.call(arr) === '[object Array]';
}

2.3 测试模块

1、发布你的包到npm

  • 对于私有包和无作用域包,使用 npm publish
  • 对于作用域的公共包,使用 npm publish --access pulic

2、在命令行中,在项目目录之外创建一个新的测试目录。

mkdir test-directory

3、切换到新目录

cd /path/to/test-directory

4、在test目录中,安装模块:

npm install <your-module-name>

5、在test目录中,创建一个test.js文件,它需要您的模块并将模块作为方法调用。

6、在命令行上,运行node test.js。应显示发送到console.log的消息。

3、关于包的 README 文件

为了帮助其他人在npm上找到你的包,并在他们的项目中使用你的代码,我们建议在你的包目录中包含一个README文件。您的README文件可能包括安装、配置和使用软件包中代码的说明,以及用户可能发现有帮助的任何其他信息。README文件将显示在软件包页面上。

npm包的README文件必须位于包的根目录下。

3.1 创建README.md文件并将其添加到包中

1、在文本编辑器中,在包根目录中创建一个名为README.md的文件。

2、在README.md文件中,添加有关软件包的有用信息。

3、保存README.md文件。

注意:.md 文件表示Markdown 文件

3.2 更新现有包README文件

README文件仅在发布新版本的软件包时在软件包页面上更新。要更新自述文件:

1、在文本编辑器中,更新README.md文件的内容。

2、保存 README.md 文件

3、在命令行中,切换到根目录中运行如下命令:

npm version patch
npm publish

4、创建和发布无作用域的公共包

作为npm用户,您可以创建未作用域的包,用于您自己的项目,并将其发布到npm公共注册表,供其他人在他们的项目中使用。无作用域的包始终是公共的,并且仅由包名引用:

package-name

有关包作用域、访问和可见性的详细信息,请参阅 npm 包和模块简介

注意:在发布公共的非作用域npm包之前,您必须注册一个npm用户帐户。

4.1 创建无作用域的公共包

1、在命令行上,为您的包创建一个目录:

mkdir my-test-package

2、切换到包的根目录:

cd my-test-package

3、如果你使用git来管理你的包代码,在包根目录下,运行以下命令,将git-remote-url替换为你的包的git远程URL:

git init
git remote add origin git://git-remote-url

4、在软件包根目录中,运行npm init命令。

5、根据响应提示生成 package.json 文件。

6、创建一个README文件
,解释包代码是什么以及如何使用它。

4.2 检查包裹内容是否包含敏感或不必要的信息

将敏感信息发布到注册表可能会伤害用户、损害开发基础结构、修复成本高昂,并使您面临法律的诉讼的风险。我们强烈建议在将您的包发布到注册表之前删除敏感信息,例如私钥、密码、个人身份信息
(PII)和信用卡数据。

对于不太敏感的信息,如测试数据,请使用.npmignore.gitignore文件来防止发布到npm注册表。

4.3 测试您的软件包

为了减少发布bug的可能性,我们建议在将包发布到npm注册表之前对其进行测试。要测试您的包,请使用包目录的完整路径运行npm install

npm install path/to/my-package

4.4 发布无作用域的公共包

1、在命令行中,切换到包的根目录。

cd /path/to/package

2、要将公共包发布到npm注册表,请运行:

npm publish

注意:如果您使用GitHub Actions发布包,则可以为您发布的每个包生成出处信息。有关详细信息

3、要查看您的公共包页面,请访问https://npmjs.com/package/* package-name
,将package-name* 替换为您的包的名称。公共包在npm网站上的包名下面会显示public

4、测试

运行命令 npm install jiang-isarray

npm install jiang-isarray

新建文件 test.js ,内容如下:

var isArray = require('jiang-isarray')
console.log(isArray);
console.log(isArray([1,2,3,4,5]))    //  true
console.log(isArray({}))    //  false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G时代的APP开发:机遇与挑战

APP开发是互联网行业中的重要组成部分&#xff0c;随着5G时代的到来&#xff0c;移动 APP开发也迎来了新的机遇和挑战。 5G时代不仅会为移动 APP开发带来新的发展机遇&#xff0c;也会给移动 APP开发带来新的挑战。对于企业和开发者而言&#xff0c;5G时代带来的机遇和挑战是并…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境5

#尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示 #尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示from Maix import freqcpu_freq, kpu_freq freq.get() …

redis数据库与主从复制

目录 一 基本操作 二 执行流程 三 reids持久化 四 rdb和aof持久化的过程 五 为什么会有内存碎片 六 redis组从复制 一 基本操作 set :存放数据 例如 set 键值 内容 set k kokoko k就是键值 kokoko就是内容 get:获取数据 例如 get k 就会出来 k对应的数据 keys 查询键…

向量数据库

向量数据库 什么是向量数据库&#xff1f; 向量数据库是一种为了高效存储和索引AI模型产生的向量嵌入数据而专门设计的数据库。 在传统的关系型数据库中&#xff0c;数据通常以表格的形式存储&#xff0c;而在向量数据库中以向量的形式存储。向量是一组数值&#xff0c;可以表…

SFP3012A-ASEMI代理海矽美(MHCHXM)快恢复二极管

编辑&#xff1a;ll SFP3012A-ASEMI代理海矽美&#xff08;MHCHXM&#xff09;快恢复二极管 型号&#xff1a;SFP3012A 品牌&#xff1a;ASEMI 芯片个数&#xff1a;1 芯片尺寸&#xff1a;102MIL*2 封装&#xff1a;TO-247AC 恢复时间&#xff1a;75ns 工作温度&#…

找到需要补充粉笔的学生编号

一个班级里有 n 个学生&#xff0c;编号为 0 到 n - 1 。每个学生会依次回答问题&#xff0c;编号为 0 的学生先回答&#xff0c;然后是编号为 1 的学生&#xff0c;以此类推&#xff0c;直到编号为 n - 1 的学生&#xff0c;然后老师会重复这个过程&#xff0c;重新从编号为 0…

【LeetCode】128.最长连续序列

题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xf…

开源快速开发平台:做好数据管理,实现流程化办公!

做好数据管理&#xff0c;可以提升企业的办公协作效率&#xff0c;实现数字化转型。开源快速开发平台是深受企业喜爱的低代码开发平台&#xff0c;拥有多项典型功能&#xff0c;是可以打造自主可控快速开发平台&#xff0c;实现一对一框架定制的软件平台。在快节奏的社会中&…

【亲测可用】Linux上安装Redis教程

一、下载并解压Redis 1、执行下面的命令下载redis&#xff1a; wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis&#xff1a; tar xzf redis-6.2.6.tar.gz 3、移动redis目录&#xff0c;一般都会将redis目录放置到 /usr/local/redis目录&#xff1a…

SpringBoot 对接微信公众号模板消息通知

效果图见测试结果&#xff0c;有问题评论 模板消息 开通模板消息功能 登录微信公众平台开通模板消息功能 (未开通时) 添加模板消息 审核通过后&#xff0c;登录微信公众平台&#xff0c;点击 广告与服务 --> 模板消息公众号如果未设置服务类目&#xff0c;则需要先设置服…

golang 中的 cronjob

引言 最近做了一个需求&#xff0c;是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的&#xff0c;现在服务上云(k8s)了&#xff0c;尝试了 k8s 的 CronJob&#xff0c;由于公司提供的是界面化工具&#xff0c;使用、查看起来很不方便。于是有了本文&#xff0c…

【iOS】Cocoapods的安装以及使用

文章目录 前言一、Cocoapods的作用二、安装Cocoapods三、使用Cocoapods总结 前言 最近笔者在仿写天气预报App时用到了api调用数据&#xff0c;一般的基本数据类型我们用Xcode中自带的框架就可以转换得到。但是在和风天气api中的图标的格式为svg格式。 似乎iOS13之后Xcode中可…

mybatis_分页

目的&#xff1a; 减少数据处理量&#xff0c;提高效率 普通sql&#xff1a; 语法&#xff1a;select * from user limit startIndex,pageSize; SELECT * from user limit 3; #[0,n] mybatis_sql: 接口&#xff1a; //分页查询List<User> getUserByLimit(Map<…

如何提高代码效率——时间复杂度与空间复杂度——【C语言】

当我们面对一个问题时&#xff0c;会有许多种解题思路。我们现在的计算机技术已经达到非常先进的地步&#xff0c;所以当我们用不同的方法对待问题时&#xff0c;时间差异不会很明显&#xff0c;内存差异我们一般在平常小问题时感受不到&#xff0c;所以我们不会去纠结程序的优…

JavaEE——Bean的生命周期

目录 1、实例化Bean 2、设置Bean的属性 3、初始化Bean &#xff08;1&#xff09;、执行通知 &#xff08;2&#xff09;、初始化的前置方法 &#xff08;3&#xff09;、初始化方法 &#xff08;4&#xff09;、执行自定义方法 &#xff08;5&#xff09;、初始化的后置…

3个月精通Python(基础篇)——第1天:Python和Vscode环境安装

安装 Python&#xff1a; 访问 Python 官网 https://www.python.org/downloads/ &#xff0c;下载最新的 Python 安装程序。 双击安装程序&#xff0c;按照提示进行安装设置即可。 在安装过程中&#xff0c;请勾选“Add Python X.X to PATH”选项&#xff0c;这样安装后 Python…

Redis学习路线(3)——Redis的Java客户端

一、如何使用Redis的Java客户端 官方文档&#xff1a; https://redis.io/docs/clients/java/ Java-Redis客户端使用场景Jeids 以Redis命令作为方法名称&#xff0c;学习成本低&#xff0c;简单实现&#xff0c;但是Jedis实例是线程不安全的&#xff0c;多线程环境下需要基于连…

华为数字化转型之道-读书笔记1

第一章 数字化转型&#xff0c;华为的战略选择 1. 数字化转型是企业的必答题 1.1 解决时代难题&#xff1a;“鲍莫尔成本病” “体验变流量&#xff0c;流量变收入”是其常见的商业模式。数字化平台通过“作业即记录、记录及数据”的方式&#xff0c;能给企业带来很多好处&a…

短视频账号矩阵系统源码开发部署路径

一、短视频批量剪辑的开发逻辑算法 1.视频剪辑之开发算法 自己研发视频剪辑是指通过对视频素材进行剪切、调整、合并等操作&#xff0c;利用后台计算机算法&#xff0c;进行抽帧抽组抽序进行排列以达到对视频内容进行修改和优化的目的。自己研发的视频剪辑工具可以通过后台码…

iOS中的一些锁

多线程在日常开发中能起到性能优化的作用&#xff0c;但是一旦没用好就会造成线程不安全&#xff0c;本文就来讲讲如何保证线程安全 锁 线程安全 当一个线程访问数据的时候&#xff0c;其他的线程不能对其进行访问&#xff0c;直到该线程访问完毕。简单来讲就是在同一时刻&a…