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

Load (custom) module via JSPM

本文关键字:模块 自定义 JSPM 加载 通过      更新时间:2023-09-26

我在/src/lib/内部有一个模块:Cow.js。然后在我的单元测试(/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

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