搭建远程仓库(源)来托管 Sencha 包(Package)
原文鏈接:https://blog.csdn.net/lovelyelfpop/article/details/78702191
在 之前的文章 中,我已經(jīng)展示了如何使用本地 package。在本文中,我將向您展示如何在自己的服務(wù)器上創(chuàng)建和托管遠(yuǎn)程 package。
要求
對(duì)于這篇文章,你需要 Sencha CMD 和 一個(gè)網(wǎng)站空間,用來托管你的 package。這可以托管在您的企業(yè)內(nèi)部服務(wù)器上或互聯(lián)網(wǎng)上。如果您在www.your-company.com下有一個(gè)可用的網(wǎng)站空間,您可以創(chuàng)建一個(gè)子域“sencha”或“cdn”,來為您的包提供服務(wù)。
只要托管可以訪問靜態(tài)資源,即滿足 GET 請(qǐng)求即可。
網(wǎng)站空間的配置
在您的web空間(我們假設(shè)cdn.your-company.com)您創(chuàng)建以下文件夾結(jié)構(gòu):cmd/packages。
這將指向URL:cdn.your-company.com/cmd/packages。
添加遠(yuǎn)程倉庫
使用Sencha CMD,我們可以通過以下命令來查看當(dāng)前遠(yuǎn)程倉庫的列表:
sencha repository list它會(huì)顯示當(dāng)前遠(yuǎn)程倉庫的列表。默認(rèn)情況下會(huì)顯示
Sencha Cmd v6.5.2.15 [INF] Remote repository connections (1): [INF] [INF] sencha - http://cdn.sencha.com/cmd/packages/現(xiàn)在我們創(chuàng)建一個(gè)新的遠(yuǎn)程倉庫,鏈接到 cdn.your-company.com/cmd/packages。我們打算把這個(gè)庫稱為“demo”。我們通過以下命令來完成此操作:
sencha package repo add "demo" http://cdn.your-company.com/cmd/packages這將添加對(duì)遠(yuǎn)程倉庫的引用。
然后執(zhí)行:
sencha package repo init -name "demo" -email "email@your-company.com"將用 name 和 email 指定的身份來初始化您的本地倉庫。
這樣,你的遠(yuǎn)程倉庫列表(sencha倉庫列表)應(yīng)該如下所示:
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/創(chuàng)建你的 Ext JS 包
使用Sencha CMD,您可以在 workspace/應(yīng)用程序 中執(zhí)行以下命令:
sencha generate package MyPackage現(xiàn)在, 你的 workspace/應(yīng)用程序 的 packages/local 文件夾中就多了一個(gè) 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": [] }重要的是這個(gè)文件中的 creator 鍵。它應(yīng)該匹配我們之前創(chuàng)建的遠(yuǎn)程倉庫的名稱。無論您為倉庫起的什么名稱,應(yīng)該僅使用1個(gè)單詞,因?yàn)?Windows 不能很好地處理帶空格的多個(gè)單詞,比如“Demo Repo”。
指定清楚這個(gè) package 被哪個(gè) framework 使用也很重要。
"framework": "ext", "toolkit": "classic",你可以刪除你不需要的鍵,比如 example,sass,overrides,slicer。然后,您也可以刪除相應(yīng)的文件夾來清理包的結(jié)構(gòu)。
構(gòu)建 package 用于遠(yuǎn)程托管
在我們準(zhǔn)備好了第一個(gè)版本并維護(hù)了我們的代碼后,就可以發(fā)布這個(gè) package 了。首先,我們必須 build(構(gòu)建)一下 package。
在我們的 package 的根目錄下,執(zhí)行命令:
sencha package build完成此操作后,package 目錄下將出現(xiàn)一個(gè) build 文件夾,它是構(gòu)建后的輸出目錄。然后進(jìn)入應(yīng)用程序根目錄下的build 目錄,您將注意到一個(gè)名為 MyPackage(或你自己取名的 package 的名稱)的文件夾。在這個(gè)文件夾中,有一個(gè)名為 MyPackage.pkg 的文件。
這個(gè)文件是剛構(gòu)建的 package 的壓縮版本。現(xiàn)在我們把這個(gè)文件添加到本地倉庫“demo”中。
我們?cè)趹?yīng)用程序根目錄下的 build/MyPackage 文件夾下執(zhí)行下面的命令:
sencha package add MyPackage.pkg完成后,它會(huì)把該包放入 Sencha CMD 安裝路徑的 cmd 文件夾中。
如果是Windows系統(tǒng),你可以在 C:\Users\用戶名\bin\Sencha\Cmd\repo\pkgs 文件夾中找到。
如果是Linux,可以在 /root/bin/Sencha/Cmd/repo/pkgs 文件夾中找到它。
在這個(gè)文件夾中,就多了一個(gè)名為 MyPackage 的文件夾。
托管你的 package
剩下的事情就是復(fù)制 bin/Sencha/Cmd/repo/pkgs 目錄下的 MyPackage 文件夾到我們的網(wǎng)站空間。您可以使用 FTP 軟件來執(zhí)行此操作。
你把 MyPackage 文件夾放到 你的網(wǎng)站空間的 packages 文件夾下!還要確保 catalog.json 更新到最新的版本!
它應(yīng)該是這樣的:
該目錄只有一個(gè)名為 Factory 的包。它包含4個(gè)版本:
你的遠(yuǎn)程倉庫現(xiàn)在可以被 Sencha CMD 發(fā)現(xiàn)了:
cdn.your-company.com/cmd/packages/MyPackage。
每次您 使用Sencha CMD 進(jìn)行 sencha app watch 或 sencha app refresh 或 sencha app build 時(shí),它都會(huì)檢查遠(yuǎn)程倉庫以獲取最新版本的 package。
package 的版本管理
如果修改了 package 的源代碼,則應(yīng)該也要更新到遠(yuǎn)程倉庫。這只需要幾個(gè)步驟即可更新 package 的版本。
- 改變你的 package.json 文件并修改 version 鍵
- build(構(gòu)建)你的 package: sencha package build
- 將構(gòu)建后的 package 添加到你的本地倉庫:sencha package add MyPackage.pkg(在 build 目錄下執(zhí)行改命令)
- 把 bin/Sencha/Cmd/repo/pkgs 中的文件夾上傳到您的網(wǎng)站空間下
完成之后,文件夾可能看起來像這樣
如何在您的應(yīng)用程序中使用該 package
要在您的應(yīng)用程序中使用該 package,您必須修改應(yīng)用程序根文件夾中的 app.json 文件。您必須按以下方式更改 requires 鍵:
"requires": ["font-awesome","jarvus-hotfixes","MyPackage" //這里 ],或者根據(jù)所使用的具體 toolkit 修改 requires 鍵:
"classic": {"js": [{"path": "${framework.dir}/build/ext-all-rtl-debug.js"}],"requires": ["ext-locale","MyPackage" //這里],"locale": "de" },一些常用的倉庫和 package 命令
-
在你的應(yīng)用程序的根目錄下執(zhí)行:
sencha app refresh -packages
這個(gè)命令會(huì)刷新你的應(yīng)用程序使用到的 package,如果你的遠(yuǎn)程倉庫的包更新了,就執(zhí)行這個(gè)命令 -
sencha repository list, 列出可用的遠(yuǎn)程倉庫
-
sencha package list, 列出所有可用的 package
-
sencha repo sync -name "demo" 可以刷新本地的緩存
如果遇到遠(yuǎn)端發(fā)布了新版本 package,但用 sencha app refresh -packages 硬是更新不到本地,就可以執(zhí)行上面這個(gè)命令刷新緩存
同步遠(yuǎn)程 package 的問題(重要)
有時(shí)候會(huì)發(fā)生這樣的情況:在將 package 上傳到遠(yuǎn)程倉庫,并用 sencha app refresh 命令刷新后,還是沒有更新(下載)到最新版本。
這種情況,您可能需要執(zhí)行以下命令來清除本地緩存:
完成之后,執(zhí)行以下命令:
sencha package get <name_of_package>將從遠(yuǎn)程倉庫下載完整的 package。
如何刪除 package 的最新版本
如果您的 workspace/應(yīng)用程序 需要回退到舊版本的 package,可以執(zhí)行:
sencha remove package <name_of_package>這個(gè)命令不會(huì)從您的遠(yuǎn)程倉庫服務(wù)器或者本地倉庫中刪除 package,但會(huì)從 workspace/應(yīng)用程序 中刪除最新版本的 package。如果您有多個(gè)版本需要回退,則可以多次輸入此命令。
參考
Creating Sencha Cmd Packages
翻譯自
https://www.enovision.net/use-and-host-your-own-ext-js-remote-packages/
總結(jié)
以上是生活随笔為你收集整理的搭建远程仓库(源)来托管 Sencha 包(Package)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本机使用跳板机远程连接要使用的服务器
- 下一篇: python3爬虫——模拟登录丁香园并提