您的位置:首页 > 其它

搭建远程仓库(源)来托管 Sencha 包(Pacakge)

2017-12-03 16:12 567 查看
之前的文章 中,我已经展示了如何使用本地 package。在本文中,我将向您展示如何在自己的服务器上创建和托管远程 package。

要求

对于这篇文章,你需要 Sencha CMD 和 一个网站空间,用来托管你的 package。这可以托管在您的企业内部服务器上或互联网上。如果您在www.your-company.com下有一个可用的网站空间,您可以创建一个子域“sencha”或“cdn”,来为您的包提供服务。

只要托管可以访问静态资源,即满足 GET 请求即可。

网站空间的配置

在您的web空间(我们假设cdn.your-company.com)您创建以下文件夹结构:
cmd/packages


这将指向URL:cdn.your-company.com/cmd/packages。

添加远程仓库

使用Sencha CMD,我们可以通过以下命令来查看当前远程仓库的列表:

sencha repository list


它会显示当前远程仓库的列表。默认情况下会显示

Sencha Cmd v6.5.2.15
[INF] Remote repository connections (1):
[INF]
[INF]     sencha - http://cdn.sencha.com/cmd/packages/[/code] 
现在我们创建一个新的远程仓库,链接到 cdn.your-company.com/cmd/packages。我们打算把这个库称为“demo”。我们通过以下命令来完成此操作:

sencha package repo add "demo" http://cdn.your-company.com/cmd/packages[/code] 
这将添加对远程仓库的引用。

然后执行:

sencha package repo init -name "demo" -email "email@your-company.com"


将用 name 和 email 指定的身份来初始化您的本地仓库。

这样,你的远程仓库列表(sencha仓库列表)应该如下所示:

Sencha Cmd v6.5.2.15
[INF] Remote repository connections (2):
[INF]
[INF]     sencha - http://cdn.sencha.com/cmd/packages/ [INF]     demo   - http://cdn.your-company.com/cmd/packages/[/code] 

创建你的 Ext JS 包

使用Sencha CMD,您可以在 workspace/应用程序 中执行以下命令:

sencha package create MyPackage


现在, 你的 workspace/应用程序 的
packages/local
文件夹中就多了一个
MyPackage


package.json

我们必须修改
packages/loca/MyPackage
文件夹中的
package.json
文件。它可能是这样的

{
"name": "MyPackage",
"namespace": "MyPackage",
"type": "code",
"framework": "ext",
"toolkit": "classic",
"creator": "demo",
"summary": "For demo purpose",
"detailedDescription": "Demo use only",
"version": "1.0.0",
"compatVersion": "1.0.0",
"format": "1",
"slicer": {
"js": [
{
"path": "${package.dir}/sass/example/custom.js",
"isWidgetManifest": true
}
]
},
"output": "${package.dir}/build",
"local": true,
"sass": {
"namespace": "Factory",
"etc": "${package.dir}/sass/etc/all.scss,${package.dir}/${toolkit.name}/sass/etc/all.scss",
"var": "${package.dir}/sass/var,${package.dir}/${toolkit.name}/sass/var",
"src": "${package.dir}/sass/src,${package.dir}/${toolkit.name}/sass/src"
},
"classpath": "${package.dir}/src,${package.dir}/${toolkit.name}/src",
"overrides": "${package.dir}/overrides,${package.dir}/${toolkit.name}/overrides",
"example": {
"path": [
"${package.dir}/examples"
]
},
"requires": []
}


重要的是这个文件中的
creator
键。它应该匹配我们之前创建的远程仓库的名称。无论您为仓库起的什么名称,应该仅使用1个单词,因为 Windows 不能很好地处理带空格的多个单词,比如“Demo Repo”。

指定清楚这个 package 被哪个
framework
使用也很重要。

"framework": "ext",
"toolkit": "classic",


你可以删除你不需要的键,比如
example
sass
overrides
slicer
。然后,您也可以删除相应的文件夹来清理包的结构。

构建 package 用于远程托管

在我们准备好了第一个版本并维护了我们的代码后,就可以发布这个 package 了。首先,我们必须 build(构建)一下 package。

在我们的 package 的根目录下,执行命令:

sencha package build


完成此操作后,package 目录下将出现一个
build
文件夹,它是构建后的输出目录。然后进入应用程序根目录下的
build
目录,您将注意到一个名为
MyPackage
(或你自己取名的 package 的名称)的文件夹。在这个文件夹中,有一个名为
MyPackage.pkg
的文件。

这个文件是刚构建的 package 的压缩版本。现在我们把这个文件添加到本地仓库“demo”中。

我们在应用程序根目录下的
build/MyPackage
文件夹下执行下面的命令:

sencha package add MyPackage.pkg


完成后,它会把该包放入 Sencha CMD 安装路径的
cmd
文件夹中。

如果是Windows系统,你可以在
C:\Users\用户名\bin\Sencha\Cmd\repo\pkgs
文件夹中找到。

如果是Linux,可以在
/root/bin/Sencha/Cmd/repo/pkgs
文件夹中找到它。

在这个文件夹中,就多了一个名为
MyPackage
的文件夹。

托管你的 package

剩下的事情就是复制
bin/Sencha/Cmd/repo/pkgs
目录下的
MyPackage
文件夹到我们的网站空间。您可以使用 FTP 软件来执行此操作。

你把
MyPackage
文件夹放到 你的网站空间的
packages
文件夹下!还要确保
catalog.json
更新到最新的版本!

它应该是这样的:



该目录只有一个名为
Factory
的包。它包含4个版本:



你的远程仓库现在可以被 Sencha CMD 发现了:

cdn.your-company.com/cmd/packages/MyPackage。

每次您 使用Sencha CMD 进行
sencha app watch
sencha app refresh
sencha app build
时,它都会检查远程仓库以获取最新版本的 package。

package 的版本管理

如果修改了 package 的源代码,则应该也要更新到远程仓库。这只需要几个步骤即可更新 package 的版本。

改变你的
package.json
文件并修改
version


build(构建)你的 package:
sencha package build


将构建后的 package 添加到你的本地仓库:
sencha package add MyPackage.pkg
(在 build 目录下执行改命令)

bin/Sencha/Cmd/repo/pkgs
中的文件夹上传到您的网站空间下

完成之后,文件夹可能看起来像这样



如何在您的应用程序中使用该 package

要在您的应用程序中使用该 package,您必须修改应用程序根文件夹中的
app.json
文件。您必须按以下方式更改
requires
键:

"requires": [
"font-awesome",
"jarvus-hotfixes",
"MyPackage" //这里
],


或者根据所使用的具体 toolkit 修改
requires
键:

"classic": {
"js": [
{
"path": "${framework.dir}/build/ext-all-rtl-debug.js"
}
],
"requires": [
"ext-locale",
"MyPackage" //这里
],
"locale": "de"
},


一些常用的仓库和 package 命令

在你的应用程序的根目录下执行:

sencha app refresh -packages


这个命令会刷新你的应用程序使用到的 package,如果你的远程仓库的包更新了,就执行这个命令

sencha repository list
, 列出可用的远程仓库

sencha package list
, 列出所有可用的 package

sencha repo sync -name "demo"
可以刷新本地的缓存

如果遇到远端发布了新版本 package,但用
sencha app refresh -packages
硬是更新不到本地,就可以执行上面这个命令刷新缓存

同步远程 package 的问题(重要)

有时候会发生这样的情况:在将 package 上传到远程仓库,并用
sencha app refresh
命令刷新后,还是没有更新(下载)到最新版本。

这种情况,您可能需要执行以下命令来清除本地缓存:

sencha repo sync


完成之后,执行以下命令:

sencha package get <name_of_package>


将从远程仓库下载完整的 package。

如何删除 package 的最新版本

如果您的 workspace/应用程序 需要回退到旧版本的 package,可以执行:

sencha remove package <name_of_package>


这个命令不会从您的远程仓库服务器或者本地仓库中删除 package,但会从 workspace/应用程序 中删除最新版本的 package。如果您有多个版本需要回退,则可以多次输入此命令。

参考

Creating Sencha Cmd Packages

翻译自

https://www.enovision.net/use-and-host-your-own-ext-js-remote-packages/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息