我有一个模块: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/

10-13 09:33