Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从0到1开发一个自己的npm包完整过程

从0到1开发一个自己的npm包完整过程

原创
作者头像
人人都是码农
发布于 2024-05-28 15:23:12
发布于 2024-05-28 15:23:12
1.2K0
举报

其实开发一个自己的 npm 包也不难,如果一个东西需要在我们很多项目中复用,那封装成一个公共的 npm 包就是一个很好的方式,也方便统一维护和管理,步骤主要有以下6个步骤:

  • 注册 npm 账号
  • 初始化项目
  • 开发项目
  • 本地调试
  • npm login 登录账号
  • npm publish 发布项目

1、注册 npm 账号

直接去 npm 官方网站 https://www.npmjs.com/ 注册账号,注册成功了才可以在本地用命令行登录。

2、初始化项目

跟我们平时初始化前端项目一样,直接输入 npm init 初始化项目。注意要发布到 npm 公共仓库里 private 属性要设置为 false,还确保 package.json 中的 name 字段是唯一的,否则发布时会失败,可以自己在 npm 网站上搜索包名或者通过如下命令查看是否已经存在同名包:

代码语言:shell
AI代码解释
复制
npm view <packageName>

初始化项目配置文件参考:

代码语言:json
AI代码解释
复制
{
  "name": "vant-tree-shaking",
  "version": "1.0.1",
  "description": "小程序按需引入vant组件,自动清除项目中未使用的vant组件,减少代码包大小,避免因未使用到的 vant 组件触发隐私协议提交审核时被拒",
  "bin": {
    "vant-tree-shaking": "bin/vant-tree-shaking.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/cafehaus/vant-tree-shaking.git"
  },
  "keywords": [
    "vant",
    "tree-shaking",
    "miniapp",
    "wechat",
    "vue"
  ],
  "author": "cafehaus",
  "email": "510878689@qq.com",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/cafehaus/vant-tree-shaking/issues"
  },
  "homepage": "https://github.com/cafehaus/vant-tree-shaking#readme"
}

还有一点需要注意的是配置文件中的版本号 version 里面的值,每次发布的时候只能在前一次的基础上往上增加,否则发布的时候也会失败。

3、开发项目

很多人一想到封装这些就觉得是一件很难的事,其实除了前端中我们经常用到的 ui 组件库,还有很多东西都是可以自己来封装成 npm 包的,哪怕只是一个处理某些数据的 function 函数同样是可以发布成 npm 包的。当然,这里也不推荐大家往 npm 上随便发布一些无意义的包,但是对于我们很多项目中用到的一些自己的公共方法,就完成可以封装成一个自己的 npm 包以便在不同的项目中复用。

我们常用的大部分 npm 包主要集中在3大类:

  • ui 库,如 element-ui
  • 方法库,如 lodash
  • 命令行,如 vue cli

刚开始可以从比较简单的命令行工具入手,就比如上面配置文件中的 vant-tree-shaking,所有代码就一个110行的 js 文件,然后设置下 package.json 配置文件中的 bin 字段,这样别人 npm install vant-tree-shaking 安装好包后就可以直接通过命令行来使用这个包了。

4、本地调试

本地设置

先将本地的 npm 包链接到全局,直接在本地 npm 包源码目录下输入命令:

代码语言:shell
AI代码解释
复制
npm link

这样就会在本地的全局 npm 目录中创建一个我们自己的包的符号链接,可以通过 npm list -g 命令来查看是否生效。然后再到需要使用我们的包的项目目录中,输入命令:

代码语言:shell
AI代码解释
复制
npm link <packageName>

这样项目中就通过上一步设置的全局软链接链接到了我们本地的 npm 开发目录,使用的时候就和项目中的 node_modules 目录下安装的依赖一样的效果。而且直接修改本地的 npm 包源码,项目中使用时也会实时生效,这样对我们本地调试就很方便。

清理

调试完成后后,我们需要清理掉本地的设置。清理掉全局的软链接,随便在哪终端命令输入:

代码语言:shell
AI代码解释
复制
npm unlink -g <package-name>

清理项目中使用的全局软链接,在项目的根目录输入:

代码语言:shell
AI代码解释
复制
npm unlink <package-name>

5、npm login 登录账号

注意在终端中输入 npm login 登录的时候报错或者自动在浏览器中打开了其他网页,一般是因为我们设置了国内 npm 镜像源导致的,当需要发布 npm 包时我们需要切换到官方的仓库才可以发布的,可以通过如下设置:

查看 npm 配置信息

代码语言:shell
AI代码解释
复制
npm config list

删除设置的镜像源

代码语言:shell
AI代码解释
复制
npm config delete registry

设置成 npm 官方地址

代码语言:shell
AI代码解释
复制
npm config set registry https://registry.npmjs.org/

根据提示输入账号、密码、邮箱和 One Time Password 密码登录,登录成功了会在控制台提示你。

6、npm publish 发布项目

登录成功后,接着输入 npm punlish 就可以发布项目了,成功后也会有相应提示,然后邮箱里也会收到一封发布成功的邮件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从0到1发布一个npm包
最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC、WAP甚至是APP中都需要使用,但是对于业务的PC、WAP、APP往往是不同的业务、不同的代码库中,尽管已经将公用的组件和方法抽离到各自公共common中,但是各个大业务大方向上的公用封装依然不能满足需求。
Tiffany_c4df
2019/09/04
1.3K0
npm发布自己的插件包
在JavaScript开发领域,npm(Node Package Manager)是不可或缺的包管理和分发工具,它不仅提供了海量的开源库供开发者使用,还允许每个人将自己的代码封装成包分享给全世界。发布一个npm插件包,不仅能提升个人影响力,还能促进技术交流与共享。本文将手把手教你如何发布npm包,同时指出过程中常见的问题、易错点及避免策略,并附带实用的代码示例。
Jimaks
2024/06/11
1850
npm发布自己的插件包
4个避免使用npm link的理由
使用npm install或者npx link去软连接一个本地包作为依赖而不是使用npm link
ACK
2022/05/06
1.8K0
前端脚手架开发指南
脚手架本质上是一个工具,使用脚手架的目的就是摆脱构建工程时重复性的工作,尤其是当一个工程具有一定通用性时,工程脚手架的意义就更为突出。它可以让我们只需要一行命令,就可以初始化好一项工程。
牛老师讲GIS
2023/02/27
8210
前端脚手架开发指南
小程序中使用npm安装vant组件实现按需引入,减少代码包大小和避免触发用户隐私协议
正常项目中我们可能都会选择 npm 的方式,但是这种方式 vant 和小程序并不支持像我们一般的前端项目中的按需引入,小程序开发工具构建 npm 时会把整个 vant 的组件编译到 miniprogram_npm 目录中,即使我们在项目中没有通过 usingComponents 申明引用的组件也会被打包进代码包中。
人人都是码农
2024/05/28
5500
小程序中使用npm安装vant组件实现按需引入,减少代码包大小和避免触发用户隐私协议
前端工程化 - 剖析npm的包管理机制(完整版)
现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解、各项前端工程化的配置以加快我们排查问题(相信不少同学收到过各种依赖问题的困扰)的速度。
ConardLi
2019/12/19
3.2K0
单位转换工具 & 怎么发一个npm 包
起因:页面上有个数值特别长,有没有一个单位自动转换工具,让页面展示得更简洁?如10000000kg 展示为10kt 或 1万吨。
玖柒的小窝
2021/11/16
5430
单位转换工具 & 怎么发一个npm 包
【译】发布你自己的npm包
如今,NPM已经成为javascript库的事实上的注册表。特别是React,Angular和其他前端库主导的网络和node.js接管的服务器端,NPM软件包比以往任何时候都更受欢迎。通常,我们会在代码中引入实用包,比如typy,sugar,并轻松的使用它们。
Jimmy_is_jimmy
2019/07/31
8700
hexo-butterfly-npm标签插件开发
​ hexo的插件嵌入有两种方式,一种是通过脚本(Script)的方式引入,demo可参考自定义标签实现;一种是通过插件(Packages)的方式将自定义的插件内容发布到npm上。
hahah
2022/08/30
8090
npm常用指令
1. 安装模块 命令 作用 npm init 初始化 package.json,它是 NodeJS 约定的用来存放项目的信息和配置等信息的文件 npm i 安装所有依赖,从github上拉取项目后,常执行此命令用于初始化 npm i 包名 安装模块到默认dependencies npm i 包名 -g 会安装到配置的全局目录下 npm i 包名 -S 安装包信息将加入到dependencies生产依赖 npm i 包名 -D 安装包信息将加入到devDependencies开发依赖 npm i 包名@1.8
777nx
2023/05/02
7850
10分钟开发一个npm全局依赖包(上)
今天在逛网页的时候看到了一个古诗词的API,然后突发奇想,用了10分钟的时间做了一款npm全局依赖包。你可以使用npm install -g pome-cli来先玩一玩。有好东西当然要跟大家分享一下啦,现在从0开始给大家简绍打造这款全局依赖包。
kai666666
2020/10/17
1.5K0
npm详解
文章目录 npm 是什么? 安装 npm 更新 npm package.json 文件 package.json 如何创建 package.json 的内容 dependencies(生产环境)和 devDependencies(开发环境)的区别 指定安装包的版本 自定义 package.json 安装包文件 引用文件库 npm 是什么? npm(node package manager):node.js 的包管理器,用于node插件管理(包括安装、卸载、管理依赖等) ,npm 是随同 node.js 一
兮动人
2021/06/11
1.7K0
npm详解
【Node.js】npm与包【万字教学~超超超详细】
不同于Node.js的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。
坚毅的小解同志的前端社区
2022/11/28
1.2K0
【Node.js】npm与包【万字教学~超超超详细】
手把手教你搭建私有化npm
Verdaccio是sinopia开源框架的一个fork,由于sinopia作者两年前就已经停止更新,坑比较多,因此Verdaccio是目前最好的选择
空白诗
2024/06/14
3670
手把手教你搭建私有化npm
如何实现一个公共组件库上传到npm并在项目中使用
一般多个项目使用一些公共组件的时候,我们没必要在每个项目里写公共组件代码,我们可以将公共组件封装成一个库,上传至npm,这样我们在项目中使用就可以直接从npm下载直接使用。当然我们也可以搭建自己本地的npm镜,而本文主要讲述上传npm。
can4hou6joeng4
2023/11/29
9610
npm 与 package.json 快速入门
张拭心 shixinzhang
2018/01/05
2.1K0
npm 与 package.json 快速入门
如何用发个 npm 包?
https://www.npmjs.com/package/mid-index-of
前端西瓜哥
2022/12/21
7000
如何用发个 npm 包?
使用开源软件搭建轻量的 NPM 私有仓库:Verdaccio
本篇内容,我们来聊聊使用开源软件 Verdaccio 搭建轻量的 NPM 私有仓库。
soulteary
2024/12/05
5270
使用开源软件搭建轻量的 NPM 私有仓库:Verdaccio
发布你自己的npm包
如今,NPM已经成为javascript库的事实上的注册表。特别是React,Angular和其他前端库主导的网络和node.js接管的服务器端,NPM软件包比以往任何时候都更受欢迎。通常,我们会在代码中引入实用包,比如typy,sugar,并轻松的使用它们。
Jimmy_is_jimmy
2023/05/24
4140
2018 年了,你还是只会 npm install 吗?
作者:rianma | 腾讯web前端开发工程师 nodejs 社区乃至 Web 前端工程化领域发展到今天,作为 node 自带的包管理工具的 npm 已经成为每个前端开发者必备的工具。但是现实状况是,我们很多人对这个nodejs基础设施的使用和了解还停留在: 会用 npm install 这里(一言不合就删除整个 node_modules 目录然后重新 install 这种事你没做过吗?) 当然 npm 能成为现在世界上最大规模的包管理系统,很大程度上确实归功于它足够用户友好,你看即使我只会执行 inst
Techeek
2018/03/26
6.7K7
相关推荐
从0到1发布一个npm包
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档