企业级包管理器之发布 npm 包 (5)

在前端开发中,将自己开发的包发布到 npm 上可以与更多开发者分享成果,同时也能提高开发效率。下面我们将详细介绍发布 npm 包的步骤。

一、准备账号

  1. 首先去 npm 官网注册一个账号。注意在注册账号的时候,把邮箱也一并设置了,方便之后接收验证码。
  2. 账号注册完毕后,就可以在控制台通过 npm login 来进行登录。
  3. 还可以通过 npm profile 相关的指令来获取个人账号相关的信息。
  4. 如果要退出登录,可以通过 npm logout 指令。

注意事项:由于我们是要向 npm 官方推送包,所以需要将镜像修改为 npm 的镜像源。

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

二、配置 package.json

  1. 设置忽略文件:当我们将包发布到 npm 上面的时候,意味着我们发布了哪些文件,最终用户下载安装的时候就会得到哪些文件。因此,我们在发布的时候就要尽量避免上传没有意义的文件,这里就涉及到设置忽略文件。

    • 黑名单方式:在项目根目录下面创建一个 .npmignore 的文件,该文件用于设置哪些文件或者目录不需要上传到 npm。例如:
    #.npmignore
    src
    tests
    

    对于黑名单的方式,在新增了不需要发布的文件后,容易忘记修改 .npmignore 文件,因此我更加推荐使用白名单的方式。

    • 白名单方式:所谓白名单,就是只有出现在名单里面的文件或目录才会被上传。在 package.json 文件里面有一个 files 字段,只有 files 字段里面出现的文件或目录才会被上传。例如:
    {
      "name": "toolset2",
      "version": "1.0.7",
      "private": false,
      "description": "This is a JavaScript function library, primarily aimed at learning and communication.",
      //...
      "files": [
        "/dist",
        "LICENSE"
      ]
    }
    
  2. 设置模块类型:通过 type 值来设置模块类型。type 对应的有两个值:

    • commonjs:当 type 的值设置为 commonjs 时,node.js 将默认使用 CommonJS 模块系统,这是 node.js 中最常见的模块系统。在这种情况下,可以直接使用 require 函数来导入模块。如果想使用 ECMAScript 模块(即使用 importexport 语法),则需要将文件扩展名设置为 .mjs
    • module:当 type 的值设置为 module 时,node.js 将默认使用 ECMAScript 模块系统。在这种情况下,可以直接使用 importexport 语法来导入和导出模块。如果你想使用 CommonJS 模块(即使用 require 导入模块),则需要将文件扩展名设置为 .cjs

    说白了现在的 node,你使用哪一种模块规范都无所谓,因为它两种都支持,你只需要通过 type 值来配置一下就可以了。

    关于 type 这个配置项,不是 npm 所提供的配置选项,而是 node 提供的配置选项。

    node 常见的配置项除了 type 以外,还有一个 exports,该配置项用于定义一个模块的导出映射,通过这个配置项,可以对模块的导入环境以及条件做一个更精细的控制,指定不同的模块的入口文件。例如:

    {
      "exports": {
        "import": "./dist/index.esm.js",
        "require": "./dist/index.cjs"
      }
    }
    

    我们在这里为不同的模块系统提供了不同的入口文件。如果使用的是 ESM,那么在导入模块的时候,node.js 会去加载 index.esm.js;如果使用的是 commonjs,那么在导入模块的时候,node.js 会去加载 index.cjs

三、打包发布

首先我们有如下的项目:

- src
   |-- index.js
   |-- sum.js
   |-- sub.js
- package.json
- rollup.config.js

package.json 配置如下:

{
  "name": "duyi-jstools",
  "version": "1.0.1",
  "description": "this package just for study and useless",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "build": "rollup -c"
  },
  "exports": {
    "require": "./dist/index.cjs",
    "import": "./dist/index.js"
  },
  "keywords": [
    "study",
    "useless"
  ],
  "files": [
    "/dist"
  ],
  "author": "xiejie",
  "license": "ISC",
  "devDependencies": {
    "rollup": "^2.79.1",
    "rollup-plugin-node-resolve": "^5.2.0",
    "rollup-plugin-terser": "^7.0.2"
  }
}

上面的重点配置:typeexportsfiles。还有一点一定要注意,rollup 打包工具一定要声明为开发依赖。

还有一些命令:

  • npm whoami:查看当前登录的用户。
  • npm publish:发布包(如果你是要向 npm 推送包,确定你镜像切换为了 npm 镜像)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值