高级Sencha CMD的用法

高级Sencha CMD的用法:
#安装注意事项:
1、位置:安装程序会让你选择一个安装位置,但更改这个位置会产生副作用。理想的做法是所有的Sencha CMD版本都安装在一个文件夹里,各个 版本分别位于用版本号命名的子文件夹里。Windows系统下为单个用户安装的默认位置类似如下的文件夹:C:\Users\myself\bin\Sencha\Cmd\n.n.n.n\
2、多个版本的安装:
运行sencha命令会显示最新的安装版本。有时,这个版本与当前的程序不兼容。这时,你只要调整PATH环境变量即可:
在Windows系统中,执行类似如下的命令:
set PATH=C:\Users\Me\bin\Sencha\Cmd\5.1.3.61;%PATH%
sencha ....
在OS X和Linux系统中,执行如下的命令:
set PATH=~/bin/Sencha/Cmd/5.1.3.61:$PATH
sencha ....


#配置
任何一个可以在命令行里传入的参数,都可以在某个配置文件里设置。
例如,为sencha compile命令设置ignore参数,要以用如下配置:
sencha.compile#ignore=attic
在#前的是Sencha CMD命令,在后面的是选项名称。


要设置全局选项(例如debug日志),如下所示:
sencha#debug=true


随着时间的进行与Sencha Cmd(特别是编译器)的发展,配置变得更重要。
查看当前的配置属性:
sencha diag show


##配置文件
与Apache Ant类似(Sench Cmd有很多方面是基于它的),配置是以一种“first-write-wins”的模式应用的。这样做的必要性在于可以用命令行覆盖属性值。
加载配置的过程是从搜索当前目录开始的,向文件系统的上方进行,直到找到工作空间。在这过程中,Sencha Cmd也在寻找应用跟Sencha Framework SDK的位置。在加载过程的最后,Sencha Cmd按序加载下面所有它探寻到的文件:


${app.dir}/app.json - Application configuration when in an application folder that is the most specific loads first.
${app.dir}/.sencha/app/sencha.cfg - Application configuration when in an application folder that is the most specific loads first.
${package.dir}/package.json - Package configuration when in a package folder that is the most specific loads next.
${package.dir}/.sencha/package/sencha.cfg - Package configuration when in a package folder that is the most specific loads next.
${workspace.dir}/workspace.json - Workspace configuration applies next when you are in a workspace (or an app or package in the workspace).
${workspace.dir}/.sencha/workspace/sencha.cfg - Workspace configuration applies next when you are in a workspace (or an app or package in the workspace).
${framework.dir}/cmd/sencha.cfg - Based on the applicable framework for the app or package at the current directory, those properties load next.
${home.dir}/.sencha/cmd/sencha.cfg - Your personal configuration loads next. This typically only sets high-level properties.
${cmd.dir}/../sencha.cfg - Local machine Sencha Cmd configuration loads next. This typically only sets high-level properties. This loads from the parent folder of the running Sencha Cmd, which is the folder that holds the various installed versions of Sencha Cmd.
${cmd.dir}/sencha.cfg - Lastly, the Sencha Cmd, version specific configuration loads.


最重要的配置属性是通过命令行传入的。这些命令行传入的配置属性会覆盖所有以上文件的配置。例如:
sencha config -prop foo=42 then ...
多数情况下,你可以通过属性的前缀来判断它是来自哪个文件:
app. -- See "app.json" and ".sencha/app/sencha.cfg".
package. -- See "package.json" and ".sencha/package/sencha.cfg".
workspace. -- See "workspace.json" and ".sencha/workspace/sencha.cfg".
framework. -- See "cmd/sencha.cfg" in the Ext JS or Sencha Touch SDK.
cmd. -- See "sencha.cfg" in the Sencha Cmd install folder.
有时候,工作空间的属性设置可能需要被程序级别的设置覆盖。要达到这个目的,workspace.foo必须在".sencha/app/sencha.cfg"里进行设置,因为这是程序级别的设置文件。


##使用JSON描述符
从Sencha Cmd 5开始,JSON配置文件就一直被定义为具有比对应的“sencha.cfg”具有更高的优先级。以前,这只会出现在Sencha Touch程序中。
诸如"app.json", "package.json" 和 "workspace.json"这样的文件,其内容都会被转化为以文件名为前缀的属性(对应的"app", "package" 或 "workspace")。例如,如果你在“workspace.json”里放置如下JSON对象:
{
    "foo": {
        "bar": 42
    }
}
 这将会设置workspace.foo.bar的属性值为42。
这种机制使“app.json”文件中的app.id属性在应用构建过程中被导入。
##Java系统属性
 为Sencha Cmd设置Java系统属性或许也很必要,比如Http代理服务器。在你的Cmd安装目录文件夹里的"sencha.cfg",有默认的设置能探测出系统定义的代理。更多的信息,请查阅"${cmd.dir}/sencha.cfg"文件里的注释。
 注:
 如果你想更改这些设置,请使用 "${cmd.dir}/../sencha.cfg"文件进行配置,这样,即使你进行Cmd的升级,这些配置也会被保留。
这些属性装饰会影响Sencha Cmd通过Web访问而进行sencha upgrade或者下载包(package)的能力。这些配置要在v3.1.1版本以上(含)。


#Cmd命令行详解
##最简短的唯一命令前缀(命令缩写)
所有的命令,类别或选项(构成命令行的要素),都可以被声明为全写或都使用唯一的简短前缀。
如下的命令是等价的:
sencha generate app MyApp ../MyApp
sencha gen ap MyApp ../MyApp
重要提示:
虽然这样做在控制台或终端上会很方便,但在脚本里使用过于简短的前缀并不是值得提倡。脚本中过于简短的命令会让它难于理解和维护。


##命令链
Sencha Cmd命令行处理器可以执行打包后的命令行。这意味着你可以避免在执行多条命令时重启Sencha Cmd进程的资源浪费。要使用命令链,你只需要在多条命令间插入and 或then即可。
“and”和“then”命令取决于Sencha Cmd的执行模式和命令及类别(commands和categories)的体系结构。and命令用来执行紧跟其后的同一类别的另一个命令。这个是最常用的命令。
如下示例生成一个控制器跟两个模型:
cd /path/to/MyApp
sencha generate controller Central and model User id:int and model Ticket id,name,email
“then”命令与and相似,不同之处在于紧接其后的命令是在根类别(Category)下的(也即是,sencha命令)。
例如,下面的命令生成一个新模型,然后构建应用:
cd /path/to/MyApp
sencha generate model User id:int,name then app build
## 批处理文件
你可以将多条命令行放到一个文件里,然后使用Sencha Cmd读取文件内的命令:
cd /path/to/MyApp
sencha @file.sencha
在上面的示例中,"file.sencha"文件被读取,其中的每行被作为一个命令行参数,其中以#号开头的作为注释,被忽略掉。
在所有的命令行中,"@file.sencha"对应的位置会被文件内的命令行所取代。这意味着,在文件中可以包含别的批处理文件的引用,如"@file2.sencha"。
## 类别状态
出于性能考虑,许多类别会在多条执行的命令之间维护状态信息。最好的例子是新的"Compile"类别的命令。Compile类型命令会为类文件夹下的文件生成缓存,这将在每条命令执行时就不需要再加载所有文件了。这个缓存上下文对于所有的该category类别里的命令行都适用。
如下命令,会重新构建 ext-all-dev.js 和 ext-all.js,但只会读取框架资源一次:
cd /path/to/MyApp
sencha compile -c sdk/src --debug=true concat -o sdk/ext-all-dev.js \
    and --debug=false concat -c -o sdk/ext-all.js
有时因为两次输出的文件配置不同而不想使用这个缓存,可以使用then命令:
cd /path/to/MyApp
sencha compile -c sdk/src --debug=true concat -o sdk/ext-all-dev.js \
     then compile -c app/foo --debug=true concat -o app/foo/foo-all.js
目前为止,只有compile类别命令可以在不同的命令之间共享缓存。


#插件
当相同版本的Sencha Cmd同时被Ext JS和Sencha Touch使用时,很多时候命令的执行操作会有少许不同,这取决于使用的框架。甚至有些命令或许只允许在一个框架内使用。
为了调解这种情况,Sencha Cmd的功能被划分为两层:命令行(一般称为"Sencha Cmd")和在Ant里的更低级的接口。这些特别的命令被从命令行转移到了插件里。


一个Sencha Cmd插件是一个Ant脚本,这个脚本包含在文件"plugin.xml"里。进程从寻找如下的可用插件开始:
${app.dir}/.sencha/app/plugin.xml
${workspace.dir}/.sencha/workspace/plugin.xml
${cmd.dir}/plugins/${framework.name}/${framework.plugin.version}/plugin.xml
${cmd.dir}/plugin.xml (also known as the "default plugin")


第一条基于当前目录被寻找到。然后Cmd会加载对应的插件,调用命令行中声明的目标。这些插件,包含Ant调用,这些调用在下一次升级时会加载插件 。例如 ,如果一个应用插件被发现,它包含了一个workspace插件的import。那个workspace插件包含一个framework级别的插件,最后,它将会包含一个默认的插件的import。


##扩展点
从技术上来说,最低的二级(框架级和默认级)是包含真实代码的仅有的插件。应用与工作空间插件默认是空的,允许用户扩展内置命令。这样做的目的是为了让您可以添加逻辑来定制项目或应用程序的作用于Sencha Cmd的代码生成标准。


如果您想查看新的模型定义是否遵循项目指导原则,例如,第一个字段总是id:string,将其添加到应用程序或工作空间的“plugins.xml”文件中:
<target name="-before-generate-model">
    <if>
        <not><matches string="${args.fields}" pattern="^id\:string,.*"/></not>
        <then>
            <fail>Models must have "id:string" as first field.</fail>
        </then>
    </if>
</target>
类似地,当添加新模型后,您还可以提供一个钩子来更新其他系统。
<target name="-after-generate-model">
    ... post new/updated Model ${args.name} and ${args.fields} ...
</target>
实际的目标名称不同于您所扩展的插件。具体情况,请参考相应的“plugin.xml”文件”中的注释。
请注意:默认的“plugin.xml“文件导入Ant Contrib(http://ant-contrib.sourceforge.net/),它提供了许多有用的任务。


#在Ant中使用:
虽然Sencha Cmd的主要用途是在命令行(因此它的名字叫Cmd),但Sencha Cmd也可以直接在Ant中使用。有关这个级别上提供的更多命令的详细信息,请参见Ant集成指南。








 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值