通过JSPM加载(自定义)模块

时间:2015-12-21 18:48:42

标签: javascript jspm

我在Cow.js内有一个模块:/src/lib/。然后在我的单元测试(/test/spec/Cow-test.js)中,我希望能够通过import { Cow } from 'Cow';引用它,就像我对JSPM导入的所有依赖项/库一样。

问题是我必须通过指定路径来完成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:babel-core@5.8.34',
    'babel-runtime': 'npm:babel-runtime@5.8.34',
    'chai': 'npm:chai@3.4.1',
...

...这是我的(非常小的)项目结构:

|   .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

1 个答案:

答案 0 :(得分:1)

您可以在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