如何开发一个自己的npm包
一、初始化npm包
npm init
运行输入包名后一直回车,直到生成一个package.json,如下

生成的文件如下
{
  "name": "chenqionghe-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "directories": {
    "lib": "lib",
    "test": "test"
  },
  "dependencies": {
    "assert": "^2.0.0",
    "should": "^13.2.3"
  },
  "devDependencies": {
    "mocha": "^8.0.1"
  },
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/chenqionghe/npm-demo.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/chenqionghe/npm-demo/issues"
  },
  "homepage": "https://github.com/chenqionghe/npm-demo#readme"
}
二、新建自己的工具类
这里我建立了一个文件lib/cqh.js,内容如下
class Cqh {
    hello() {
        console.log('hello chenqionghe')
    }
}
module.exports = Cqh;
三、新建入口文件index.js
默认package.json中指定的入口是index.js,也就是require能用到的东西,我们在index.js里导出一下我们的工具包cqh.js就行了
const Hello = require("./lib/hello");
module.exports = {
    Hello
};
四、编写单元测试
安装一下依赖包
npm install mocha assert --save-dev
新建文件test/cqh.js,代码如下
/* eslint-env es6 */
const {describe} = require('mocha');
const assert = require('assert');
const {Cqh} = require('../index');
describe('cqh', () => {
    it('hello', async () => {
        let cqh = new Cqh();
        assert("hello chenqionghe", cqh.hello())
    });
});
我们运行一下,断言成功

五、登录仓库
- 官方仓库
npm adduser
- 私有仓库
npm adduser --registry 仓库地址
这里我登录的是官方的

六、发布包
- 官方仓库
npm publish
- 私有仓库
npm publish --registry 仓库地址
发布如下

登录官网可以看到已经发布成功了

七、安装使用
- 安装
npm install chenqionghe-demo

- 测试
 新建index.js文件
  
const {Cqh} = require("chenqionghe-demo");
let cqh = new Cqh();
cqh.hello();
运行如下

八、删除包
- 删除指定版本
npm unpublish 包名@版本号 --force
- 删除整个包(慎用、慎用、慎用)
npm unpublish  包名 --force
如果是私有仓库请加上--registry 仓库地址
下面演示了删除1.0.1的版本
npm unpublish chenqionghe-demo@1.0.1

ok,就是这么简单,你学会了吗~
如何开发一个自己的npm包的更多相关文章
- 开发一个健壮的npm包
		项目地址:loan-calculate-utils npm包的发布.更新查看上一篇文章 开发一个基础的npm包 目前我们的目录是这个样子: . ├── source 源代码目录 │ └── ind ... 
- 开发一个基础的npm包
		初始化项目 # 新建文件夹 mkdir whosmeya-npm-package-test # 进入 cd whosmeya-npm-package-test/ # 初始化 package.json, ... 
- 发布一个简单的npm包
		本文简单地记录了发布一个简单npm包的过程,以便后续参考使用. 初始化npm init 通过npm init创建一个package.json文件 D:\robin\lib\weapp-utils> ... 
- 如何自己写一个公用的NPM包
		以markdown-clear,创建过程为例,讲解整个NPM包创建和发布流程 1 如何创建一个包 1.1 创建并使用一个工程 在GitHub上新建一个仓库,其名markdown-clear clone ... 
- npkill 一个方便的npm 包清理工具
		npm 包很好用,但是占用空间太多了,npkill 提供了一个方便的工具,可以帮助我们查找安装的npm 包,以及进行清理 安装 npm install -g npkill 简单使用 命令 npkill ... 
- 如何用AR Engine开发一个虚拟形象表情包?
		现如今,人们在网上聊天.发帖时越来越爱用表情包,表情包一方面是一种个性化的表达方式,另一方面更能传达出当下的心理活动,可以说在网络社交中表情包是一个不可或缺的存在.加上近年来元宇宙的兴起,3D虚拟形象 ... 
- 开发一个项目之npm
		npm (nodejs平台上写的js模块的管理工具 下载.互相依赖等) npm install 本地项目的node_modules文件夹 , -g npm config prefix 目录eg: ... 
- npm_一个有意思的npm包
		$ npm install yosay const yosay = require('yosay'); console.log(yosay('Hello, and welcome to my fant ... 
- (转)前端开发-发布一个NPM包之最简单易懂流程
		原文地址:https://www.cnblogs.com/sghy/p/6829747.html 1.npm官网创建npm账户 npm网站地址:https://www.npmjs.com/ npm网站 ... 
随机推荐
- Keepalived 原理与实战
			Keepalived 原理与实战 随着系统架构的逐渐演化,服务器的数量和结构会越来越复杂,例如 Web 服务器集群的搭建,提高了系统的性能,同时也提高了系统维护的复杂度,我们需要对集群中各台服务器进行 ... 
- 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)
			加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ... 
- 使用flask实现简单的文件上传
			from flask import Flask, redirect, render_template, request, url_forfrom werkzeug.utils import secur ... 
- Go 包管理中的常见问题
			随处可见的GO111MODULE=on 在GitHub上,经常看到不少项目的readme里都有这么一句: ✗ GO111MODULE=on go get golang.org/x/tools/gopl ... 
- CPU缓存学习及C6678缓存使用总结(知识归纳)
			作者注: 1.本篇博客内容是本人在学习cpu缓存原理时进行的学习总结,参考了多处相关资源(书籍,视频,知乎回答等),参考出处标注在内容最后. 2.由于本篇内容的编辑工作在印象笔记完成,输出的PDF文件 ... 
- 初尝 Blazor WebAssembly
			一. 前言 Blazor 的整体介绍以及特点与优势,建议翻阅 Blazor 介绍. Blazor 是一个可是使用 .NET/C# 来编写交互式客户端的 Web UI 框架,在官网有一句话概括 &quo ... 
- 货车运输  noip2013 luogu P1967 (最大生成树+倍增LCA)
			luogu题目传送门! 首先,题目让我们求每个货车的最大运输量,翻译一下就是求路径上边权最小的边. 利用一下贪心思想可知,所有货车肯定都会尽量往大的边走. 进一步翻译,即为有一些小边货车根本不会走,或 ... 
- 如何看待 HashiCorp 官宣,不允许中国境内使用其旗下产品?
			欢迎转载,欢迎看官推荐. 前言 HashiCorp 官方宣布,不允许中国境内使用.部署和安装该企业旗下的企业版产品和软件.该公司比较知名的产品有:Terraform.Consul.Vagrant 等. ... 
- Java实现 蓝桥杯 算法提高 菱形
			试题 算法提高 菱形 请编程输出一个菱形.输入为菱形中心到顶点的距离 样例输入 2 样例输出 import java.util.Scanner; public class Main { public ... 
- Java实现 LeetCode 230  2的幂
			231. 2的幂 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = ... 
