Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/testing/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按package.json名称导入当前包导出_Javascript_Testing_Import_Package.json - Fatal编程技术网

Javascript 按package.json名称导入当前包导出

Javascript 按package.json名称导入当前包导出,javascript,testing,import,package.json,Javascript,Testing,Import,Package.json,我很想知道是否有一种约定允许人们从包内测试包的预期使用情况。考虑下面的包。JSON: { "name": "@place/fn", "version: "1.0.0" } 在这个包中,我想要一个test.js文件,其中包含以下代码: import mainThing, { anotherThing } from '@place/fn'; 使用正确的目录结构或package.json配置是否可以实现这一点?如果CommonJS语法效果更好的话,我也可以使用它。好的,我找到了一个答

我很想知道是否有一种约定允许人们从包内测试包的预期使用情况。考虑下面的包。JSON:

{
   "name": "@place/fn",
   "version: "1.0.0"
}
在这个包中,我想要一个
test.js
文件,其中包含以下代码:

import mainThing, { anotherThing } from '@place/fn';

使用正确的目录结构或package.json配置是否可以实现这一点?如果CommonJS语法效果更好的话,我也可以使用它。

好的,我找到了一个答案,但是在这个过程中我发现了很多其他相关的东西,可能会帮助其他人

首先,现在我明白我想做的是将当前包作为本地依赖项安装。这可以在
package.json中使用中的以下语法完成

现在,我可以运行
npmi
来安装该更改并编写以下测试文件:

import mainThing, { anotherThing } from '@place/fn';
当运行测试文件时,导入操作将如同它已安装到另一个包中一样;更好地模仿预期用途


我发现的另一件事是,您可以使用中的语法对从npm安装的包进行别名

这将允许您执行以下操作:

let Case = require('case-1.5.3');
let Kool = require('kool');

最后,我发现的另一件事是,对于
package.json
上的一个新键,它映射在中找到的目录。还有其他软件包(如)也有类似的功能,但最大的区别在于安装的解决方案(即:
模块别名
)只能在您使用的软件包中工作。似乎
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'
(我希望我知道什么术语要求包的路径干净,可能有别名,而不是分解主导出。)

// ./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
import get from 'lodash/get'