搭建远程仓库(源)来托管 Sencha 包(Pacakge)
2017-12-03 16:12
567 查看
在 之前的文章 中,我已经展示了如何使用本地 package。在本文中,我将向您展示如何在自己的服务器上创建和托管远程 package。
只要托管可以访问静态资源,即满足 GET 请求即可。
这将指向URL:cdn.your-company.com/cmd/packages。
它会显示当前远程仓库的列表。默认情况下会显示
要求
对于这篇文章,你需要 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, 列出所有可用的 packagesencha 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/
相关文章推荐
- 在Linux服务器上搭建Git远程仓库并Push本地库
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
- Maven学习 (四) 使用Nexus搭建Maven私服 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找
- Git-GitHub搭建远程仓库
- 版本管理—Git之使用GitHub搭建远程仓库
- Linux搭建git远程仓库
- 自己搭建Git服务器实现SSH以及远程仓库迁移
- git用github搭建远程仓库
- 【开发工具 - Git】之本地项目托管到远程仓库
- Git在Windows下搭建本地远程仓库及一些问题小结
- git仓库相关知识03-搭建远程仓库服务器
- Nexus搭建Maven私服(二) 分发构件至远程仓库
- Android入门教程十之Git之使用GitHub搭建远程仓库
- 【GitLab】git一个项目托管到两个远程仓库
- 在Linux服务器上搭建Git远程仓库并Push本地库
- 入门级Hadoop集群搭建详细教程(六):yum本地仓库与远程仓库配置
- gulp搭建开发环境、git同步远程仓库
- Centos6.5搭建git远程仓库
- window搭建git远程仓库
- Git之使用GitHub搭建远程仓库