jspm 多应用,公共本地模块

jspm multiple apps, common local module

我是 jspm 的新手,我正在尝试评估 JSPM 作为我当前使用 requirejs 的应用程序的替代品。

jspm如何处理多个modules/packages?例如:

mycustomlib
   |
   |-src
   |-jspm_packages
   |    |-npm
   |    |-github
   |-config.js

上面的 config.js 文件包含 mycustomlib 所需的所有依赖项。注意,mycustomlib 没有发布到 npm,也不会在 github 上存在。它将成为我存储库中的私人自定义库。

现在说我有几个应用程序使用 mycustomlib 但有自己的 config.js,因为它们也有其他依赖项。

mycustomlib
  |
myapp1
  |
  |-src
  |-config.js

myapp2
  |
  |-src
  |-config.js

我应该如何确保 myapp1 和 myapp2 也可以使用 mycustomlib 中的 config.js,以便它们可以使用 mycustomlib 及其依赖项?

在 requirejs 方法中,我将 mycustomlib/config.js 包含在 index.html 中,然后 myapp1/myapp2 必须自己包含 main.js,其中包括 requirejs.config( {....}); requirejs 将合并配置。

我想这可以归结为,使用本地的推荐方式是什么 packages/modules?

据我所知,没有一种机制可以完全按照您现在的期望执行此操作。也许最终会有人实现一个本地JSPM Custom Registry。您可以考虑以下两种替代方法:

1. (ab)使用 JSPM linking 机制

我用来通过 JSPM 安装本地包的一个工作流程是为包分配一个 github/npm/jspm 别名,否则该别名不存在,并使用 JSPM linking 机制安装本地包包而不是检索远程副本。在您的情况下,您可能(根据需要替换版本规格):

从 mycustomlib 目录中(此命令可能需要一些时间):

jspm link npm:mycustomlib@0.0.1

在每个 myapp1myapp2 中:

jspm install --link npm:mycustomlib@0.0.1

这有点麻烦,您会发现当 mycustomlib 中的任何内容发生变化时,并且经常在更改 myapp1/ 的依赖项时,您需要重新 link 包myapp2jspm-linker 包可以减轻一些这种痛苦,并自动为您重新link。

2。配置您自己的注册表

您有几个 options for setting up "your own" registry. If you don't already have access to any of these types of services, it's probably easiest for the average person to use the 3rd-party git custom JSPM registry jspm-git 可以让您直接从托管库的普通 git 存储库安装自己的库。据我所知,您不能将本地路径与 jspm-git.

一起使用

关于分享您的 config.js:

只要你正确配置每个包作为一个JSPM包共享一个config.js是不必要的。