当前位置: 首页 > news >正文

JS开发node包并发布流程

开发一个可发布到 npm 的 JavaScript 插件,需要遵循标准的开发、测试、打包和发布流程。以下是详细步骤指南:


1. 初始化项目

创建项目目录并初始化 package.json

mkdir my-js-plugin
cd my-js-plugin
npm init -y
  • 手动修改 package.json,确保包含必要字段:
    {"name": "my-js-plugin",  // 插件名称(npm 唯一)"version": "1.0.0",      // 初始版本"description": "A JavaScript plugin for XXX","main": "dist/index.js", // 入口文件(需编译后路径)"scripts": {"build": "rollup -c",  // 打包命令(示例用 Rollup)"test": "jest"        // 测试命令},"keywords": ["plugin", "javascript", "npm"],"author": "Your Name","license": "MIT","dependencies": {},"devDependencies": {}
    }
    

2. 开发插件代码

创建源码文件(ES6+ 语法)

mkdir src
touch src/index.js
  • 示例插件代码src/index.js):
    export default class MyPlugin {constructor(options) {this.options = options;}greet() {console.log(`Hello, ${this.options.name || 'World'}!`);}
    }
    

3. 配置打包工具

推荐使用 RollupWebpack 打包(支持 ES Module 和 CommonJS)。

安装 Rollup(示例)

npm install rollup @rollup/plugin-babel @rollup/plugin-commonjs @rollup/plugin-node-resolve --save-dev

创建 Rollup 配置文件(rollup.config.js

import babel from '@rollup/plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';export default {input: 'src/index.js',output: [{file: 'dist/index.js',format: 'umd',       // 兼容 CommonJS 和浏览器name: 'MyPlugin',    // 全局变量名},{file: 'dist/index.esm.js',format: 'esm',      // ES Module},],plugins: [resolve(),commonjs(),babel({ babelHelpers: 'bundled' }),],
};

配置 Babel(babel.config.json

npm install @babel/core @babel/preset-env --save-dev
{"presets": ["@babel/preset-env"]
}

运行打包

npm run build
  • 生成的文件在 dist/ 目录下。

4. 添加单元测试

安装 Jest

npm install jest --save-dev

创建测试文件(test/index.test.js

import MyPlugin from '../src/index';test('MyPlugin should greet correctly', () => {const plugin = new MyPlugin({ name: 'Alice' });expect(plugin.options.name).toBe('Alice');
});

运行测试

npm test

5. 准备发布

1. 注册 npm 账号

  • 在 npm 官网 注册账号。
  • 在终端登录:
    npm login
    

2. 检查 package.json 关键字段

  • name: 确保唯一性(可在 npm 官网搜索验证)。
  • version: 遵循 语义化版本(如 1.0.0)。
  • main: 指向打包后的入口文件(如 dist/index.js)。

3. 添加 .npmignore(可选)

忽略不需要发布的文件(类似 .gitignore):

src/
test/
rollup.config.js
babel.config.json

6. 发布到 npm

npm publish
  • 首次发布需验证邮箱。
  • 更新版本时:
    npm version patch  # 更新补丁版本(1.0.1)
    npm publish
    

7. 后续维护

  • 版本管理
    • npm version major|minor|patch 更新版本号。
  • 文档
    • README.md 中写明用法、API 和示例。
  • 持续集成
    • 可配置 GitHub Actions 自动测试和发布。

8.完整目录结构

my-js-plugin/
├── dist/                # 打包后的文件
│   ├── index.js         # UMD 格式
│   └── index.esm.js     # ES Module 格式
├── src/
│   └── index.js         # 源码
├── test/
│   └── index.test.js    # 测试代码
├── package.json
├── rollup.config.js
├── babel.config.json
└── README.md

9. 本地调试和测试

在 npm 包未上传到 npm 仓库之前,可以进行本地调试和测试,使用 npm linknpm link 可以在本地创建符号链接,使得项目可以直接引用本地开发的 npm 包,而无需发布到 npm,步骤如下:

  1. 在 npm 包目录下运行 npm link

    cd /path/to/your-package
    npm link
    

    这会在全局 node_modules 中创建一个软链接,指向你的本地包。

  2. 在项目中链接该包

    cd /path/to/your-project
    npm link your-package-name
    

    这样,项目中的 node_modules/your-package-name 会指向本地包目录。

  3. 测试修改

    • 修改本地包代码后,项目会自动获取最新更改,无需重新安装。
    • 适用于快速迭代开发。
  4. 取消链接

    npm unlink your-package-name  # 在项目中取消链接
    cd /path/to/your-package && npm unlink  # 在包目录取消全局链接
    

相关文章:

  • 实战案例-FPGA的JESD204调试问题解析
  • 适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案
  • Python内置类型子类化的陷阱与解决方案
  • 快速上手驭码CodeRider二
  • 浅谈Linux中一次系统调用的执行过程
  • PHP框架在内容管理系统开发中的优势:效率、安全与扩展性!
  • JMeter 处理 UTF-16 转 UTF-8 乱码问题解决方案(deepseek)
  • arm服务器运行Jmeter报错问题UseG1GC
  • 使用Jmeter做功能测试有哪些优点?
  • 网络中基础的三张表(mac、arp、route)
  • Jmeter中变量如何使用?
  • 抖音授权登录-获取用户授权调用凭证
  • D. Plus Minus Permutation
  • PocketSCP:蛋白质口袋动态时空拓扑可视化分析新方法
  • 论文略读:DAILYDILEMMAS:REVEALINGVALUEPREFERENCES OFLLMSWITHQUANDARIESOFDAILYLIFE
  • OCR(光学字符识别)算法
  • 智能合约中人工智能驱动的漏洞分析:趋势、挑战与未来方向
  • 【leetcode-合并两个有序链表】
  • AI助手一键生成专业PPT(Gamma/Genspark/Kimi)
  • [Git] 标签管理
  • 广州网站运营十年乐云seo/广州发布紧急通知
  • crm管理系统功能/seo的方式包括
  • 铜陵保障性住房和城乡建设网站/百度帐号个人中心
  • 移动网络建设/seo引擎优化怎么做
  • 外贸公司的网站建设模板下载/江北seo页面优化公司
  • 公司的网站推广怎么做/bt搜索引擎