npm 如何测试自己本地的包?灵活运用 npm link 和 npm install ./package!
2024-02-06 10:45:22
前言
在软件开发中,测试是一个必不可少的环节。尤其是在使用本地包时,为了确保代码的质量和可靠性,在将其发布到公共注册表之前进行本地测试非常重要。
在 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 目录中。
这两种方法都非常简单易用,我们可以根据自己的需要选择其中一种方法来测试本地包。