Npm 奥雷利亚外部资源
我正在寻找一种最好的方式来安排我的代码库,让不同项目之间共享公共资源。我有三个aurelia应用程序。在每一个文件夹中,我都在其资源文件夹中添加了一些资源(自定义元素、属性等)。当我需要一个已经在另一个项目中编写的文件时,我只是粘贴了它。现在我有时间进行重构,我想将所有这些资源移动到一个专用的存储库中。然后我希望能够在每个项目中只挑选我需要的资源 我试着把我所有的资源放在一个repo中,并从aurelia skeleton中获取一个构建任务,这个任务允许我构建我所有模块的AMD模块。然后,通过将一些模块添加到aurelia.json中,我可以单独加载它们。例如,对于属性:Npm 奥雷利亚外部资源,npm,resources,structure,aurelia,Npm,Resources,Structure,Aurelia,我正在寻找一种最好的方式来安排我的代码库,让不同项目之间共享公共资源。我有三个aurelia应用程序。在每一个文件夹中,我都在其资源文件夹中添加了一些资源(自定义元素、属性等)。当我需要一个已经在另一个项目中编写的文件时,我只是粘贴了它。现在我有时间进行重构,我想将所有这些资源移动到一个专用的存储库中。然后我希望能够在每个项目中只挑选我需要的资源 我试着把我所有的资源放在一个repo中,并从aurelia skeleton中获取一个构建任务,这个任务允许我构建我所有模块的AMD模块。然后,通过将
{
"name": "aurelia-resources-progress-button",
"path": "../node_modules/SHG-aurelia-resources/dist/amd/resources/attributes",
"main": "progress-button"
}
或自定义元素:
{
"name": "aurelia-resources-avatar-upload",
"path": "../node_modules/SHG-aurelia-resources/dist/amd/resources/elements/avatar-upload",
"main": "avatar-upload",
"resources": [
"avatar-upload.html",
"avatar-upload.css"
]
}
它的工作原理类似于charme,但对于从相对路径导入模块的值转换器来说,它失败了。
文件位于:
“projectRoot/node_modules/SHG aurelia resources/dist/amd/resources/value converters/duration format.js”,
它从“../utils./strings”导入
及
我在运行时遇到以下错误:
错误:eNote:没有这样的文件或目录,请打开
“/Users/hadrien/Documents/dev/SportHeroes/united heroes/src/resources/utils/strings.js”
奇怪的是,当我需要一个模板中的相对模块时(就像在我的进度按钮自定义属性中),就没有问题了
我不想做插件,因为我不想加载我的repo的每个模块。如果可能的话,我希望能够设置.feature('../node\u modules/path/resources')
,并像加载本地资源一样加载它们
我该怎么办?我正在回答上面评论中重新表述的问题 如果您有一个npm包,您可以使用
require
元素简单地从中获取资源。这个npm包可以将自身打包为插件,您只需选择不以这种方式加载它,因为您只需要它提供的东西的一个子集
我创建了一组示例项目来展示这一点:
此应用程序依赖于
这个依赖项将自身打包为一个插件,但也可以像我在应用程序中所做的那样,通过只使用插件拥有的两种资源中的一种来零碎地使用它。请注意,其他资源没有加载,因为我没有使用它
这是当我从依赖项中拉入资源时,应用程序中的情况:
<template>
<require from="sample-resources-so41961759/custom-elements/my-echo"></require>
<h1>${message}</h1>
<my-echo say="Echo!"></my-echo>
</template>
${message}
为什么不想使用插件?插件和功能的API基本相同。您已经通过NPM包分发了资源,所以正确的方法是通过插件API。因为我不想加载每个模块。假设我的外部资源中有10个模块。应用程序A使用10,我可以使用插件。但是应用程序B只使用两个模块,我只想加载这两个。你不必在使用插件时“加载每个模块”。是吗?如何选择要加载的模块?请给我一点时间,我会写一个答案。:-)好的,但是我必须为每个模块创建任何新的存储库,所以。我曾计划将它们全部放在一个存储库中……我发布的存储库中有两个资源。你可以在回购中放入任意数量的资源。好的,但是如果我的应用程序只需要MyEcho
,我会加载插件,如果我不使用它,它也会在供应商捆绑事件中添加MyShow
。如果我不想让我的资源全球化?如果我想从包名的相对路径(如sample-resources-so41961759/custom elements/my echo
)中要求/导入它们,那么您必须设置树摇动并学习webpack或其他内容,最有可能。我想要一些关于这方面的信息;)