我有一个模块:Cow.js
内的/src/lib/
。然后在我的单元测试(/test/spec/Cow-test.js
)中,我希望能够像对JSPM导入的所有依赖项/库一样通过import { Cow } from 'Cow';
引用它。
问题是我必须像import { Cow } from '../../src/lib/Cow';
一样通过指定路径来执行此操作。
有什么方法可以按照我的要求进行操作,而不必担心我在哪里以及模块位于何处?
这背后的原因是:我可以将模块移动/重构到任何位置,并且路径应该在一个位置(例如,在JSPM配置文件中),而不是在我引用它们的地方。
有什么线索吗?
PS:我可以共享任何源代码:类/模块。
这是我的JSPM配置文件的一部分:
System.config({
baseURL: '',
defaultJSExtensions: true,
transpiler: 'babel',
babelOptions: {
'optional': ['runtime', 'optimisation.modules.system']
},
paths: {
'*': '*.js',
'github:*': 'jspm_packages/github/*',
'npm:*': 'jspm_packages/npm/*'
},
map: {
'babel': 'npm:[email protected]',
'babel-runtime': 'npm:[email protected]',
'chai': 'npm:[email protected]',
...
...这是我的(非常小的)项目结构:
| .babelrc
| config.js
| gulpfile.babel.js
| karma.conf.js
| package.json
|
+---jspm_packages/
|
+---node_modules/
|
+---src
| | bootstrap.js
| | main.js
| |
| \---lib
| Cow.js
|
\---test
|
\---spec
Cow-test.js
最佳答案
您可以在JSPM的配置文件中使用包声明。
例如,您可以声明一个包Cow
,然后使用import Cow from 'Cow';
导入它。
请参阅此处的文档:
-https://github.com/jspm/registry/wiki/Configuring-Packages-for-jspm
-https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#packages
您还可以在JSPM的配置文件中定义文件夹的路径。
假设您有lib/
文件夹,并且有一些文件(cow.js,sheep.js ...),则可以这种方式导入:import cow from 'lib/cow.js'
。
在config.json内部:
{
...
"path": {
"lib/": "src/lib/"
},
...
}
在此处查看文档:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#paths
关于javascript - 通过JSPM加载(自定义)模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34402379/