开发并发布一个属于自己的包(npm)

一、CommonJS规范导入require

创建一个npm包涉及几个步骤,包括设置你的项目结构、编写代码、编写文档、测试你的代码,以及发布到npm仓库。以下是一个基本的指南,帮助你从头开始创建一个npm包。


image.png

还可以通过如下方式查看入口文件:


image.png

步骤 1: 初始化npm项目

1,创建项目文件夹:首先,你需要一个文件夹来存放你的项目。

mkdir muzidigbig-utils-npm
cd muzidigbig-utils-npm

2,初始化npm项目:在项目文件夹中,运行以下命令来初始化一个新的npm项目。

npm init -y

这会创建一个package.json文件,包含一些默认设置。

步骤 2: 编写代码

1,创建文件:根据你的包需要,创建必要的文件和目录结构。例如,如果你打算创建一个简单的工具函数库,你可以创建一个index.js文件。

// index.js
function sayHello(name) {
  return `Hello, ${name}!`;
}
 
module.exports = { sayHello };

步骤 3: 编写文档

1,更新package.json:在package.json文件中,你可以添加更详细的描述、关键字、作者信息等。

{
  "name": "muzidigbig-utils-npm",
  "version": "1.0.0",
  "description": "A simple npm package example.",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": ["muzidigbig", "utils", "npm"],
  "author": "muzidigbig",
  "license": "ISC"
}

name: 包名称,
version: 版本号,
description: 包描述,
main: 入口文件,
keywords:数组(搜索关键字),
license:开源协议

步骤 4: 测试你的代码

1,添加测试脚本:你可以使用Jest、Mocha等测试框架来测试你的代码。首先,安装Jest:

npm install --save-dev jest

2,创建测试文件:例如,创建一个 test/my-package.test.js 文件:

const { sayHello } = require('../index');
test('says hello', () => {
  expect(sayHello('World')).toBe('Hello, World!');
});

3,更新package.json的scripts:添加一个测试脚

"scripts": {
  "test": "jest"
}

4,运行测试:

npm test
image.png

步骤 5: 发布到npm仓库

1,登录到npm:如果你还没有登录,运行以下命令

npm login

image.png

**首先确保你本地的镜像为 npm **镜像****

查看镜像
npm config get registry

修改为 npm镜像
npm config set registry https://registry.npmjs.org/

修改为 npm镜像(全局)
sudo npm config set -g registry https://registry.npmjs.org/

2,发布包确保你的版本号在package.json中是唯一的(遵循语义版本控制),然后运行:

npm publish

每次 npm publish 都需要修改 package.json version版本号保证其唯一。


image.png

3,更新包

npm version patch
npm publish / npm publish --registry=https://registry.npmjs.org

注意:npm version patch是在你原有的版本号+1,假设v1.0.0,他会在这个基础上加1为v1.0.1,如果你的版本不是加1,你可以不用npm version patch,直接手动改package.json,然后再npm publish

如何避免每次都要我输入--registry=registry.npmjs.org

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容