如何发布一个npm包
1. 准备工作
-
安装node
-
去npm官网注册一个账号
2. 本地创建一个项目包
-
创建一个文件夹,自定义名称,此处设为 cm-first-npm-demo
-
命令行进入文件夹下,输入
npm init -y
快速初始化项目,或输入npm init
并依次输入以下信息字段名 字段含义 package name 包名 version: (1.0.0) 包的版本,默认是1.0.0 description 包的描述信息 entry point 入口文件,默认是 index.js test command 测试命令,可直接回车忽略 git repository git仓库地址,可直接回车忽略 keywords 索引关键字,便于别人搜索到你的包 author 作者 license 许可信息,直接回车 填完之后,会有以下提示信息
About to write to xxx/package.json: { "name": "xxx", "version": "1.0.0", "description": "一个npm测试包", "main": "index.js", "scripts": { "test": "" }, "author": "", "license": "" } Is this OK? (yes)
直接回车,我们会看到文件夹下有个 package.json 文件,如果你想修改包的信息,可直接在此文件中修改保存。
-
创建一个 index.js 文件,写入一个加法函数作为测试函数,代码如下:
module.exports.add = function (a, b) { return a + b }
3. 发布包
-
以管理员身份运行命令行
-
修改npm仓库源,输入
npm config set registry https://registry.npmjs.org/
注:包发布完成后切回淘宝源
npm config set registry https://registry.npmmirror.com/
-
进入 cm-first-npm-demo 文件夹下,输入
npm login
填写用户名、密码、邮箱后完成登录
-
发布包
npm publish
-
登录npm官网查看包是否发布成功
4. 测试包
-
创建一个文件夹,自定义名称,此处设为 npm-test,作为引入发布包的测试项目
-
命令行进入文件夹下,快速初始化项目
npm init -y
-
安装我们所发布包
npm i cm-first-npm-demo -S
-
创建 index.js 文件,引入发布包,代码如下
const npmDemo = require('cm-first-npm-demo') console.log(npmDemo.add(33, 44))
-
修改 package.json 文件,在script中添加
"start": "node index.js"
,如"scripts": { "start": "node index.js" }
-
输入
npm start
,输出 77,包引入成功
5. 可能出现的问题
-
登录时:
解决方式:切换到管理员
解决方式:输入邮箱接收到的一次性验证码。
-
安装包时
解决方式:
(1)等个十几分钟,登录https://npmmirror.com/,查看自己的包是否已被同步。
(2)如果已同步,修改npm仓库源,再次安装
npm config set registry https://registry.npmmirror.com/ npm i cm-first-npm-demo -S
6. 有关包的导入
在上面的测试包中,我们使用 module.exports
进行导出,require
进行导入,那么使用 module.exports
或 exports
进行导出,能否使用 import
进行导入呢?
因为node使用的是CommonJs规范,不支持直接在js中使用 import
,故我们在测试项目 npm-test 下新建文件 index.mjs,并写入以下代码
import npmDemo from 'cm-first-npm-demo'
console.log(npmDemo.add(33, 44))
命令行进入文件夹下,输入
node index.mjs
输出如下
所以,对于发布的包,如果我们使用 module.exports
或 exports
进行导出,既能使用 require
,也能使用 import
进行导入。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)