我们的环境已经设置了私有git存储库并配置了jspm来从此存储库安装软件包。 repo有一个.js,.html和.css文件。 Jspm将所有文件放入一个文件夹中,并在名称后附加@master以反映分支,并将其全部存储在我机器上预配置的jspm_packages位置。它还在文件夹旁边添加了第二个@master.js文件,其中包含导出语句(我自己没有创建此文件)。
这些文件代表我想在我的aurelia应用程序中使用的自定义元素。视图模型有一个.js,视图有一个.html(和.css文件)。当我去使用自定义元素时,我得到一个404,找不到文件,因为system.js正在寻找一个不存在的@master.html文件。
Jspm似乎引用了config.js中的@master.js文件,不知怎的,假设在Aurelia中有一个@master.html文件?使用jspm安装软件包时,只创建了@master.js文件。原始.html文件确实存在并存在于我上面提到的文件夹中,但是@master.html文件没有,我不确定1)该文件的用途和2)为什么它的原因被引用。我的代码中没有对@master.html的引用。
我甚至不确定这是JSPM问题,Aurelia问题,System.js问题还是它们的某些组合?
其他人对这些技术有类似的经历吗?
谢谢, 克里斯
答案 0 :(得分:0)
从本质上讲,Aurelia相信你将你的repo导入为自定义元素,所以当你导入@master.js时,它正在寻找匹配的"视图"它假设的是一个视图模型。
听起来您需要将存储库构建为插件。在顶层添加index.js
文件并使其负责运行configure函数,该函数应该使您想要全局资源的组件。确保您的package.json指向您的main.js
作为' main'。之后,您需要在index.js
文件中添加.plugin(' your-package-name'),就像任何其他插件一样。
示例import {Options, GLOBAL_OPTIONS, DIRECTION} from './options';
import {Dragula} from './dragula';
import {moveBefore} from './move-before';
export {Dragula, Options, DIRECTION, moveBefore};
export function configure(config, callback) {
let defaults = new Options();
config.container.registerInstance(GLOBAL_OPTIONS, defaults);
if (callback !== undefined && typeof callback === 'function') {
callback(defaults);
}
config.globalResources(['./dragula-and-drop']);
}
就像这样:
{{1}}
(摘自here)