# npm发布流程

# 写在最前面

目前已经发布了属于自己的NPM包,如果发布新的后会更新:

  • @karl_fang/mylibs——这是一个JS库,打包了数学、数据结构、函数、URL和数组的常用函数
  • @karl_fang/data-structure——这个NPM包括了用JS封装常见的数据结构以及在JS语言中将链表和二叉树展示的辅助函数

TIP

也可以在右上角导航栏Guide菜单中查看

# 注册npm官网账号

npm官网:https://www.npmjs.com/

输入用户名、密码、邮箱

# 建立文件

  • 输入npm init,建立package.json文件,配置如下:
{
  "name": "@karl_fang/mylibs",
  "version": "1.0.0",
  "description": "This is a JS library that packages the common functions of mathematics, data structure, function and array.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "javascript",
    "tools"
  ],
  "author": "karl_fang",
  "license": "MIT",
  "type": "module"
}
  • name:一般与文件夹的名字相同
  • version:版本号
  • description:对该NPM包的描述
  • main:入口文件
  • scripts:设置快捷命令
  • keywords:该NPM包的关键词,类似网站的keywords
  • author:作者名
  • license:我也不太清楚各种license的区别,就写了MIT

# 写JS库

把JS按module导出,然后在入口文件index.js中import导入,最后把所有的导出:

import ArrayTools from './src/array/array.js';
import BinaryTree from './src/dataStructure/binaryTree.js';
import LinkedList from './src/dataStructure/linkedList.js';
import MinStack from './src/dataStructure/minStack.js';
import Sort from './src/dataStructure/sort.js';
import MyFunctions from './src/function/general.js';
import MyRegExp from './src/function/regRep.js';
import MyURL from './src/function/URL.js';
import MathTools from './src/math/math.js';

export {
  ArrayTools,
  BinaryTree,
  LinkedList,
  MinStack,
  Sort,
  MyFunctions,
  MyRegExp,
  MyURL,
  MathTools
}

# 写README文档

# 本地登陆NPM

  • 输入命令
npm adduser
  • 输入NPM账号的用户名
  • 输入密码
  • 输入绑定NPM账号的邮箱

如果遇到镜像源问题:

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/flexing - Forbidden
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy

可以输入命令更改到官方的源(E403)才行:

npm config set registry https://registry.npmjs.org/

# 发布NPM包

  • 输入npm publish

# 更新版本

  • 输入命令更新版本号

    • 修订号,问题修正
    npm version patch 
    
    • 次版本号,功能性新增
    npm version minor
    
    • 主版本号,不兼容的API 修改
    npm version major
    
  • 发布输入

npm publish

还会收到邮件,输入8位的OTPcode

如果NPM包的名字是@开头的那可能会报错,

npm ERR! publish Failed PUT 402
npm ERR! code E402
npm ERR! You must sign up for private packages :

这个当你的包名为@your-name/your-package时才会出现,原因是当包名以@your-name开头时,npm publish会默认发布为私有包,但是 npm 的私有包需要付费,所以需要添加如下参数进行发布:

npm publish --access public

# 补充

一般的NPM包应该至少包括入口文件index.jsREADME文档,package.json文件