搭建远程仓库(源)来托管 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",

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

构建 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 watchsencha app refreshsencha 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘_博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值