一、CommonJS规范导入require
创建一个npm包涉及几个步骤,包括设置你的项目结构、编写代码、编写文档、测试你的代码,以及发布到npm仓库。以下是一个基本的指南,帮助你从头开始创建一个npm包。
步骤 1: 初始化npm项目
-
创建项目文件夹:首先,你需要一个文件夹来存放你的项目。
mkdir muzidigbig-utils-npm cd muzidigbig-utils-npm
-
初始化npm项目:在项目文件夹中,运行以下命令来初始化一个新的npm项目。
npm init -y
这会创建一个
package.json
文件,包含一些默认设置。
步骤 2: 编写代码
-
创建文件:根据你的包需要,创建必要的文件和目录结构。例如,如果你打算创建一个简单的工具函数库,你可以创建一个
index.js
文件。// index.js function sayHello(name) {return `Hello, ${name}!`; }module.exports = { sayHello };
步骤 3: 编写文档
-
更新
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: 测试你的代码
-
添加测试脚本:你可以使用Jest、Mocha等测试框架来测试你的代码。首先,安装Jest:
npm install --save-dev jest
-
创建测试文件:例如,创建一个 test/my-package.test.js 文件:
const { sayHello } = require('../index'); test('says hello', () => {expect(sayHello('World')).toBe('Hello, World!'); });
-
更新
package.json
的scripts:添加一个测试脚"scripts": {"test": "jest" }
-
运行测试:
npm test
步骤 5: 发布到npm仓库
-
登录到npm:如果你还没有登录,运行以下命令:
npm login
首先确保你本地的镜像为 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/
-
发布包:确保你的版本号在
package.json
中是唯一的(遵循语义版本控制),然后运行:npm publish
每次 npm publish 都需要修改 package.json version版本号保证其唯一。
-
验证发布:登录到npm网站,查看你的包是否已经发布。
通过以上步骤,你可以成功创建一个并发布一个npm包。记得在开发过程中不断更新文档和添加更多功能,以使你的包更加完善和有用。
删除 npm包
执行命令 npm unpublish 包名 --force
,即可从 npm 删除已发布的包。
注意
:
① npm unpublish 命令只能删除 72 小时以内发布的包。
② npm unpublish 删除的包,在 24 小时内不允许重复发布。
Usage 用法
1.项目中安装依赖:
npm install muzidigbig-utils-npm
2.引入包
// const { sayHello } = require('muzidigbig-utils-npm');
import { sayHello } from 'muzidigbig-utils-npm'; // ES6
console.log(sayHello('World')); // Outputs: Hello, World!
二、升级为ES6模块导入(import/export)
Node.js > v13.2.0
步骤 1: 设置type为module
在项目的package.json中添加"type": "module"
,这样Node.js会将所有的.js文件都当成ES6模块来处理
步骤 2: 代码转译
使用如Babel这样的转译工具将代码转译为兼容老版本Node.js的格式
npm i @babel/core @babel/preset-env
配置 Babel
通常使用 .babelrc
文件或 babel.config.cjs
文件来配置 Babel
module.exports = {presets: ['@babel/preset-env'],
}