#Sencha Cmd包
Sencha Cmd包含Sencha包管理器。包的设计主要为了解决两个问题:吞吐量和分布式开发。
## 包文件夹
所有的工作空间在根目录都有一个由Sencha Cmd生成的"packages"文件夹。它的位置是可以配置的,但不管它位置在哪里,它的功能都是存放工作空间中应用程序使用的所有的包。
packages/       # Container folder for shared Cmd packages
    local/      # Folder for packages generated in this workspace
    remote/     # Folder for packages downloaded into the workspace
使用命令:sencha generate package可以生成包,位置位于”packages/local"。
## 在应用中引用包
不管包的位置在哪里(本地创建或是人远程仓库下载-如下代码所示),使用包的方式都是相同的:你只需要在“app.json”文件的requires数组里添加入口即可。为了演示,我们在下面代码里添加了一个简单的包,你可以使用它。
{
    "name": "MyApp",
    "requires": [
        "cool-stuff"
    ]
}
添加了上述引用后,sencha app build与sencha app refresh都会执行相应的操作将包集成到你的应用里。一般来说,在改变包的引用后,你需要运行sencha app refresh以便将开发模式需要的元数据更新到最新。
不管你执行哪个命令,Sencha Cmd都会下载包并将包解压到"packages/remote"文件夹。之后,你便在你的工作空间中发现一个"packages/remote/cool-stuff"文件夹。

## 本地包
包的一个用处是存放代码或主题以供工作空间中的多个应用使用。这些包不需要被分发(不受源代码控制管理)。
生成一个包的命令:
sencha generate package common
此命令生成一个位于"packages/local/common"里的新包。在包的配置文件里,它也会被标记为local:true。这个标记防止Sencha Cmd从远程仓库下载版本覆盖掉此包。如果在之前的版本发布里,通过修改”workspace.json“将包文件夹合并在一起,这个标记就十分重要。
在app.json里引用包:
{
    "name": "MyApp",
    "requires": [
        "common"
    ]
}

## 远程包
虽然本地包在大型应用程序中非常有价值,但包中最有用的一个方面是能够为其他人提供分发包。我们使用包存储库共享和分发包。Sencha Cmd自动创建了一个“本地存储库”,用于缓存包和发布包。在本指南中没有讨论本地存储库用于包创建的功能。
有关该主题的详细信息请参见文章”创建Sencha Cmd包“。

### 本地存储库
•许多操作隐式地使用本地存储库。当Sencha Cmd遇到“app.json”中的requires语句时,它遵循如下这些基本步骤:
•在工作区中查看包是否已经存在。
•检查本地存储库,看看是否已经下载了一个版本。
•查看定义的远程存储库,查看是否有包。
•从远程存储库中下载包并添加到本地存储库。
一旦下载了包,对这个包的后续引用(requires)就不需要再下载了;该包将在本地存储库中找到。
#### 本地存储库的位置
本地存储库是在“旁边”的一个文件夹中创建的,以方便缓存。
例如,用户Foo上的Sencha Cmd的默认安装目录可能是这样的:
C:\Users\Foo\bin\Sencha\Cmd\n.n.n.n
基于如上安装目录,本地存储库将位于:
C:\Users\Foo\bin\Sencha\Cmd\repo
这可以通过编辑位于Sencha Cmd安装文件夹中的“sencha.cfg”文件来改变该位置。

### 远程存储库
为了将包下载到本地存储库,Sencha Cmd必须了解远程存储库。
在默认情况下,Sencha Cmd自动将Sencha包存储库添加为一个名为“Sencha”的远程存储库。

要查看远程存储库的列表,请运行sencha存储库列表命令:

> sencha repository list
...
[INF] Remote repository connections (1):
[INF]
[INF]     sencha - http://cdn.sencha.com/cmd/packages/

您可以使用sencha repository add和sencha repository remove命令,从这个列表中添加和删除存储库。
如果您选择托管它,那么您的本地存储库实际上是一个有效的远程存储库。

## 包目录

可使用的包集在“目录”中列出。
您可以使用以下命令显示全局目录(Catalog)的内容:
sencha package list
当您列出包时,您会注意到该清单包括名称和版本。

### 包的命名
因为Sencha Cmd的存储库管理是分布式的,您可以在您认为合适的情况下添加或删除远程存储库,所以没有通用的包名称空间。如果您保留了sencha包存储库的默认“sencha”连接,那么您可以将该存储库的内容视为一个命名标准。

Sencha发布的包(不包括在Sencha框架内)将使用以下形式的名称:

sencha - *
ext - *
touch- *
cmd - *

所有从上面的前缀开始的包名都是由Sencha对Sencha包存储库保留的。
建议您避免与这些命名冲突,即使您与Sencha包存储库断开连接。

## 版本管理

要连接包和它们的消费者(即应用程序或其他包),考虑所涉及的版本是很重要的。
为了帮助管理这个问题,所有的包都有版本号,这些版本号被requires语句用来处理版本限定。

### 包版本

所有的包都是由它们的名称和版本的组合来描述的。
然而,对于包的每个版本,都有另一个版本号来描述其向后兼容性的级别。
这个版本是由包创建者所声明,他们相信他们的包的特定版本可以向后兼容某些特定的以前版本级别。

在“package.json“文件中的描述符有两个重要的属性:version和compatVersion。
例如:

{
    ...
    "version": "n.n.n",
    "compatVersion": "2.4.2",
    ...
}
这个版本号必须是这种格式:
\d+(\.\d+)*

### 版本限定

在使用上面的requires属性时,我们只指定了包名,以使示例尽可能简单。这表示使用“最新版本”。
在某些情况下,这是可以接受的,但是如果包的下一个版本是完全重新设计并且没有提供向后兼容的级别,那么它可能是一个有风险的引用。

为了保护您的应用程序避免此种问题,我们可以将需求声明更改为严格声明,并锁定我们想要的版本号:

{
    "name": "MyApp",
    "requires": [
        "ext-easy-button@1.0"
    ]
}

这种方法有它的适用性,但是它甚至阻止了包的维护版本的使用。
在项目的最后阶段,这可能正是我们想要的,但是在开发过程中,也许我们想要少一些限制,并且接受任何兼容的版本。

以下的变化将会实现向后兼容到指定版本:

{
    "name": "MyApp",
    "requires": [
        "ext-easy-button@1.0?"
    ]
}

上面引用的是最新版本的“ext-easy-button”,它将自己描述为向后兼容1.0版本。

其他限制版本匹配的方法是:
•-1.2(没有更低的限制,最多为1.2版本)
•1.0-(没有上限-1.0或更高版本)
•1.0+(与上面的版本1.0或更高版本相同)
•1.0-1.2(版本1.0到1.2版本)
•1.0 - -1.2吗?
(兼容版本1.0,包含1.2版本)

### 解决版本问题

考虑到所有引用的和可用的版本,Sencha Cmd将决定最好的匹配包,并确保这些包在您的工作空间中。

如果存在相互排斥的引用,这个过程可能会失败。
在这种情况下,您将看到一条错误消息,解释了哪些引用(requires)是无法满足的。

Sencha Cmd包相关推荐

  1. 【翻译】使用新的Sencha Cmd 4命令app watch

    原文:http://www.sencha.com/blog/using-the-new-app-watch-command-in-sencha-cmd-4/ 作者:Don Griffin Don Gr ...

  2. ExtJs6.5.2新手入门——如何用sencha cmd创建自己的第一个项目

    博主自己也是一个刚开始学习ext的小白,学习新知识一定要记录下来,直接复制自己原来写的培训手册里的,希望能帮到刚接触ExtJs的你!--[作者:伊利蛋白钙yL  原文链接:http://www.cnb ...

  3. [Ext JS6]Sencha Cmd

    Sencha Cmd及其功能 Sencha Cmd是一个跨平台的命令行工具,提供从产生项目代码到部署到正式环境的自动化任务. 包括功能有: 代码产生工具 JS编译 ,优化代码减少应用载入的时间 Web ...

  4. sencha app watch php,Sencha Cmd使用指南

    查看Cmd版本 使用 sencha 命令查看当前cmd版本信息 sencha 显示如下 Sencha Cmd v6.1.2.15 Sencha Cmd provides several categor ...

  5. Sencha Cmd的简介

    Sencha Cmd的简介 ~~~~~~~~~~~~~~~~~~~~~~~ Sencha cmd 是一个跨平台的命令行工具,它从你应用程序的新创建到部署入产品中的整个生命周期都提供了许多自动化的执行任 ...

  6. Sencha Cmd 优化 Sencha Ext JS/7.5.12

    使用 Sencha Cmd 优化 Sencha Ext JS 应用程序 Sencha Themer - 概览 Sencha Cmd 是构建 Ext 应用程序的基石 Sencha Cmd 是构建 Sen ...

  7. 《Ext JS 6.2实战》节选——使用Sencha Cmd创建应用程序

    如果对Sencha Cmd不熟悉或没有了解过的,一定会很诧异为什么要用这个东西来创建应用程序,使用它又有什么好处呢?本章将会解答这些疑问,并介绍如何使用它来创建应用程序,以及应用程序创建后后如何开始进 ...

  8. Sencha Cmd 6/7 让你的 ExtJS6/7 项目使用 ES6/ES7/ES8 语法规范

    原文链接:https://blog.csdn.net/lovelyelfpop/article/details/78528107 Sencha Cmd 6.5 最大的变化: 支持动态加载包(dynam ...

  9. 【翻译】Sencha Cmd中脚本压缩方法之比较

    概述 这么多年来,Web开发人员都被告知应优化他们生产环境的代码.传统的方法是将应用程序的所有脚步进行压缩以减少应用程序的大小,以便让应用程序加载更快.而Sencha Cmd这么多年以来已经将这个过程 ...

最新文章

  1. 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
  2. jQuery.extend与jQuery.fn.extend的区别
  3. 关于计算机英语素材,计算机专业英语相关素材.doc
  4. 阿里:马云从未转让和退出淘宝股份 也没有这个打算
  5. xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行?
  6. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...
  7. 【数据结构与算法】【算法思想】动态规划
  8. Fixcel电子表格——报表模块(一)
  9. spring使用之旅(一) ---- bean的装配
  10. 数据结构12: 实践项目之进制转换器
  11. JAVA中this的四种用法的详解
  12. rubyinstaller2 32/64位 2.3.3
  13. Android Studio User Manual
  14. c语言:查ascii码值
  15. 马拉车java_算法-Manacher算法 / 马拉车算法(Java实现)
  16. 新体育杂志新体育杂志社新体育杂志社新体育编辑部2022年第8期目录
  17. 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
  18. CAD填充无法修剪的解决办法
  19. 基因结构显示服务器,科学网—宏基因组注释和可视化神器MEGAN入门 - 刘永鑫的博文...
  20. SpringBoot整合腾讯云COS对象存储实现文件上传

热门文章

  1. [LaTeX] 将minipage环境中的脚注(footnote)放到正文并添加超链接
  2. 2014【史上最全】的中国各行业竞争格局
  3. 小程序步数解密php,微信小程序--获取微信运动步数的实例代码
  4. Unity屏幕永远保持为固定分辨率
  5. Sqoop导入导出基本操作
  6. 万物互联之边缘计算简述-背景
  7. You-Get--基于Python3的开源网络视频下载工具
  8. 2021-02-11-JavaWeb网站接入支付宝支付
  9. 昆明站 · 参会指南 | 2018中国软件生态大会
  10. 阿里云服务器ECS的建站完整过程