搭建远程仓库(源)来托管 Sencha 包(Package)
原文链接:https://blog.csdn.net/lovelyelfpop/article/details/78702191
在 之前的文章 中,我已经展示了如何使用本地 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/现在我们创建一个新的远程仓库,链接到 cdn.your-company.com/cmd/packages。我们打算把这个库称为“demo”。我们通过以下命令来完成此操作:
sencha package repo add "demo" http://cdn.your-company.com/cmd/packages这将添加对远程仓库的引用。
然后执行:
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/创建你的 Ext JS 包
使用Sencha CMD,您可以在 workspace/应用程序 中执行以下命令:
sencha generate package 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 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/
总结
以上是生活随笔为你收集整理的搭建远程仓库(源)来托管 Sencha 包(Package)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 本机使用跳板机远程连接要使用的服务器
- 下一篇: 集合运算器-C