首页 > 其他分享 >发布一个简单的npm包简单流程

发布一个简单的npm包简单流程

时间:2024-03-22 10:25:59浏览次数:479  
标签:npm const nrm 流程 简单 镜像 dt change

前言:

聪明的你做了几个项目之后,有没有发现发现某些工具方法或者组件的使用频率很高,好多项目都在用。如何做到这些工具方法或者组件的更优雅地复用而不是用到了就复制粘贴呢?封装为一个npm包是一个不错的选择。本文以图文结合的方式介绍了如何从0到1发布一个npm包,文中的一些关键点的说明将帮你避坑提效。欢迎阅读学习~

1.发布前的代码基本配置

  1. npm官方建议规范的包至少包含:
  2. package.json(包的基本信息)
  3. README.md(文档)
  4. index.js (入口文件)

A.创建文件夹

  1. mkdir my_firs_npm
  2. cd my_first_npm

B.npm init/npm init -y初始化项目

npm init/npm init -y

C.配置package.json文件

  1. {
  2. "name": "my_first_npm",
  3. "version": "1.0.0", //标明发布时的版本
  4. "description": "my first npm package",
  5. "main": "index.js", //写清楚入口文件
  6. "scripts": {
  7. "test": "echo "Error: no test specified" && exit 1"
  8. },
  9. "keywords": [ //标明关键字,方便其他人检索我们所创建的包
  10. "npm",
  11. "packge"
  12. ],
  13. "author": "wlaozhichi",
  14. "license": "ISC" //使用ISC作为许可证
  15. }

D.创建index.js文件

例如在这里我配置了一个转化时间的npm包

  1. function dateFormat(str){
  2. const dt=new Date(str)
  3. const y=dt.getFullYear()
  4. const m=change(dt.getMonth()+1)
  5. const d=change(dt.getDate())
  6. const hh=change(dt.getHours())
  7. const mm=change(dt.getMinutes())
  8. const ss=change(dt.getSeconds())
  9. return `${y}-${m}-${d} ${hh}:${mm}-${ss}`
  10. }
  11. function change(n){
  12. return n>9?n:'0'+n
  13. }
  14. module.exports={
  15. dateFormat
  16. }

E.创建README.md文件

F.最基本的目录结构

  1. └── my_first_npm
  2. ├── README.md
  3. ├── index.js
  4. └── package.json

2.账号注册

打开注册页面www.npmjs.com/signup

开始输入自己的个人信息以及账号进行注册 

3.登录npm账号

A.使用cmd进行登录

执行npm login 命令登录npm :

npm login

有些同学可能会在登录的时候出现以下报错

原因是我们一般都是使用taobao的镜像源进行下载,这时候我们必须要转化为原来的npmjs的镜像源,这时候我们需要使用nrm的工具进行更改镜像源

B.使用nrm工具

nrm 用于管理镜像,是一个可以切换npm镜像的管理工具。如下是安装和查看是否安装成功的命令:

  1. npm i -g nrm
  2. nrm -V

常用nrm命令如下:

 下图是使用nrm ls命令查看镜像:

 下图是将镜像切换为npm

 

C.成功登录

切换镜像之后再登录:

 

4.发布包

A.登录成功之后即可执行发布命令:npm publish

 B.名字相似发布失败

但是感觉名字'mxdevutil'可读性不咋好啊,所以改了一下名字,新名字为'mx-dev-util'重新发布,但却报错,如下图所示:

 

5.如何删除npm 包

npm unpublish <报名> -force

 

 

标签:npm,const,nrm,流程,简单,镜像,dt,change
From: https://www.cnblogs.com/mounterLove/p/18087285

相关文章

  • 尝试 `npm install @xxxxx` ,或者添加一个包含 `declare module ‘xxxxx‘;` 的新声明(.
    我们在vue3+ts的项目中,有时候安装插件,在导入文件使用的时候会出现上面的问题,这是因为插件库中并没有ts的.d.ts类型的声明文件,所以我们在导入使用的时候一直报警告,无法使用。要解决这个问题,根据他的提示有两种解决方案。方案一:根据提醒安装对应的ts类型插件即可。方案二:......
  • aiohttp unix socket 启动简单说明
    aiohttp官方推荐了不少部署模式,以下是关于unixsocket部署的简单说明参考配置web.pyfromaiohttpimportwebimportargparseparser=argparse.ArgumentParser(description="aiohttpapp")parser.add_argument('--path')asyncdefhello(request):......
  • 一些简单的绕过总结
    一些简单的绕过总结对关键字进行不同编码select*fromzzz=select*from%257a%257a%257a//url编码单引号=%u0027、%u02b9、%u02bc//Unicode编码adminuser=0x61646D696E75736572//部分十六进制编码空格=%20%09%0a%0b%0c%0d%a0//各类编码对关键......
  • java流程控制语句
    今天是复习学习第四天如果有和我一样复习Java基础或者准备学习Java的可以看看我的这些学习内容也欢迎大佬观看我的文章做出指导对我代码或者觉得我哪里理解不到位希望能给我指导指导非常感谢大家祝大家在计算机行业越来越好!!!下面是我今天复习的内容Java流程控制语句分......
  • QT增加线程函数步骤流程
    在使用线程的时候,不仅要关注线程开启的时机,同时还要关注线程安全退出,这样才能保证程序的健壮性,如果线程开启的较多,且开启关闭比较频繁,建议使用线程池来处理。开启线程有三种方式:第一种C++的开线程方式;第二种自定义一个继承自QObject的类,把要处理的事情放在这个类中实现,然后再ne......
  • 简单部署syslog日志服务
    服务yum-yinstallrsyslogvi/etc/rsyslog.conf$ModLoadimudp$UDPServerRun514####endoftheforwardingrule###$templateIpTemplate,"/var/log/syslog/%FROMHOST-IP%/%$year%-%$month%-%$day%.log.log"*.*?IpTemplatesystemctlrestartrsyslo......
  • 多线程并发聊天室简单实现代码详解 -- 涉及网络编程,多线程和线程同步的知识
            本项目主要完成多线程并发聊天室的基础功能,即多个客户端之间通过服务器可以实现群发消息,重点在于学习网络编程,多线程和线程同步的基础知识(基于Linux)。    下面我会详解每一部分的代码。1.主线程        1.1首先由于是自己在电脑里面测试,......
  • 使用appuploder流程笔记
    使用appuploder流程笔记1.如何没有账号去apple官网注册一个,地址:https://developer.apple.com/account2.下载解压appuploder,双击打开,用刚刚注册的账号登录,下载地址:http://www.applicationloader.net/(使用第一次后,可以点击记住密码即可一键登录)注意:未支付apple的账号需要勾......
  • 前端基础之JavaScript流程控制
    一、if判断在JavaScript中,if语句是一种常见的条件语句,用于根据条件执行不同的代码块。除了基本的if语句外,还有if...else、if...elseif...else等变体,用于处理多个条件的情况。1.if语句if语句用于在条件为真时执行特定的代码块。语法:if(condition){//当条件......
  • 项目流程
     电商系统的终端访问方式-------pc端,移动app,移动web,微信小程序前后端分离的开发模式,基于ajax负责调接口 用到的技术:vue         vue-router         element-ui         axios         echart......