返回

npm 如何测试自己本地的包?灵活运用 npm link 和 npm install ./package!

前端

前言

在软件开发中,测试是一个必不可少的环节。尤其是在使用本地包时,为了确保代码的质量和可靠性,在将其发布到公共注册表之前进行本地测试非常重要。

在 Node.js 生态系统中,npm 是一个非常流行的包管理工具。它提供了多种方法来测试本地包,其中最常用的两种方法是 npm link 和 npm install ./package。

目录结构

在开始之前,让我们先了解一下本地包的目录结构。一般来说,一个本地包的目录结构如下:

package-name/
├── package.json
├── src/
│   └── index.js
└── test/
    └── index.test.js

其中,package.json 是包的配置文件,src/ 目录包含源代码,test/ 目录包含测试代码。

外部测试包的 package.json

在测试本地包之前,我们需要先在外部测试包的 package.json 文件中添加对本地包的依赖。

{
  "name": "external-test-package",
  "version": "1.0.0",
  "dependencies": {
    "local-package": "link:../package-name"
  }
}

其中,local-package 是本地包的名称,link:../package-name 表示这是一个本地依赖,它指向本地包的目录。

包的 package.json

在本地包的 package.json 文件中,我们需要指定包的名称、版本号、作者、许可证等信息。

{
  "name": "package-name",
  "version": "1.0.0",
  "author": "John Doe",
  "license": "MIT"
}

包的内容

在本地包的 src/ 目录中,我们需要编写源代码。源代码可以是任何 JavaScript 代码,但它必须导出一个模块。

// src/index.js
module.exports = function () {
  console.log('Hello, world!');
};

在本地包的 test/ 目录中,我们需要编写测试代码。测试代码可以是任何 JavaScript 代码,但它必须使用一个测试框架,比如 Mocha。

// test/index.test.js
const assert = require('assert');
const index = require('../src/index');

describe('index', function () {
  it('should log Hello, world!', function () {
    assert.strictEqual(index(), 'Hello, world!');
  });
});

方式一:npm link

npm link 命令可以将本地包链接到全局环境。这样,我们就可以在任何地方使用这个本地包。

要使用 npm link,我们需要先进入本地包的目录,然后执行以下命令:

npm link

执行完这个命令后,本地包就会被链接到全局环境。

现在,我们可以在外部测试包的目录中执行以下命令来安装本地包:

npm install local-package

执行完这个命令后,本地包就会被安装到外部测试包的 node_modules 目录中。

现在,我们就可以在外部测试包中使用本地包了。

const localPackage = require('local-package');

localPackage(); // Hello, world!

方式二:npm install ./package

npm install ./package 命令可以将本地包安装到当前目录的 node_modules 目录中。

要使用 npm install ./package,我们需要先进入本地包的目录,然后执行以下命令:

npm install .

执行完这个命令后,本地包就会被安装到当前目录的 node_modules 目录中。

现在,我们可以在外部测试包的目录中执行以下命令来使用本地包:

const localPackage = require('./package-name');

localPackage(); // Hello, world!

真实案例演示

为了更好地理解如何使用 npm link 和 npm install ./package 来测试本地包,我们来看一个真实案例。

假设我们有一个名为 local-package 的本地包,它包含以下代码:

// src/index.js
module.exports = function () {
  console.log('Hello, world!');
};

我们还需要一个名为 external-test-package 的外部测试包,它包含以下代码:

// package.json
{
  "name": "external-test-package",
  "version": "1.0.0",
  "dependencies": {
    "local-package": "link:../local-package"
  }
}

// src/index.js
const localPackage = require('local-package');

localPackage(); // Hello, world!

要测试 local-package,我们可以先进入 local-package 的目录,然后执行以下命令:

npm link

执行完这个命令后,local-package 就会被链接到全局环境。

现在,我们可以在 external-test-package 的目录中执行以下命令来安装 local-package:

npm install local-package

执行完这个命令后,local-package 就会被安装到 external-test-package 的 node_modules 目录中。

现在,我们就可以在 external-test-package 中使用 local-package 了。

// src/index.js
const localPackage = require('local-package');

localPackage(); // Hello, world!

现在,我们就可以运行 external-test-package 来测试 local-package 了。

npm run test

如果一切正常,我们应该会看到以下输出:

 PASS  test/index.test.js
  ✓ should log Hello, world! (3ms)

  1 passing (3ms)

总结

npm link 和 npm install ./package 是两种常用的测试本地包的方法。npm link 可以将本地包链接到全局环境,而 npm install ./package 可以将本地包安装到当前目录的 node_modules 目录中。

这两种方法都非常简单易用,我们可以根据自己的需要选择其中一种方法来测试本地包。