我很想知道是否有一个约定允许人们从包中测试包的预期用法。考虑以下 package.json:
{
"name": "@place/fn",
"version: "1.0.0"
}
在这个包中,我想要一个
test.js
文件,带有 正是 以下代码:import mainThing, { anotherThing } from '@place/fn';
这是否可以通过正确的目录结构或 package.json 配置来实现?如果这样会更好,我也可以使用 CommonJS 语法。
最佳答案
好的,找到了一个答案,但是我在这个过程中发现了很多其他相关的东西,可能会帮助其他人。
首先,现在我明白我想要做的是将当前包安装为本地依赖项。这可以在 package.json
中完成使用 this answer 中的以下语法.
{
"name": "@place/fn",
"dependencies": {
"@place/fn": "file:./"
}
}
现在,我可以运行
npm i
安装该更改并编写以下测试文件:import mainThing, { anotherThing } from '@place/fn';
运行测试文件时,导入就像安装到另一个包中一样;更好地模仿预期用途。
我发现的另一件事是,您可以使用 this answer 中的语法为从 npm 安装的软件包设置别名。 .
"dependencies": {
"case-1.5.3": "npm:case@^1.5.3",
"kool": "npm:case@^1.6.1"
}
然后,您可以执行以下操作:
let Case = require('case-1.5.3');
let Kool = require('kool');
最后,我发现的另一件事是 Node@13 allows
package.json
上的新 key 映射在 this answer 中找到的目录.还有其他软件包(如 module-alias
)做类似的事情,最大的区别是已安装的解决方案(即: module-alias
)只能在您正在使用的软件包中工作。好像是新的 exports
关键 package.json
将进行映射以在其他包中使用。// ./node_modules/es-module-package/package.json
{
"name": "es-module-package",
"exports": {
"./my/": "./src/js/lib/my/"
}
}
import thing from 'es-module-package/my/thing.js';
// Loads ./node_modules/es-module-package/src/js/lib/my/thing.js
最终,所有这些的目的是测试我在包外提供的语法样式是否可以从包内进行测试,而不是安装到另一个包中并在那里进行测试。现在我可以检查一个常见的 lodash 导入语法是否适用于我的包。
import get from 'lodash/get'
(我希望我知道这个术语是什么要求一个干净的,也许是别名的包路径,而不是解构主导出。)
关于javascript - 通过 package.json 名称导入当前包导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60194835/