Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 将多个独立的通用应用程序合并到一个主应用程序_Extjs_Sencha Cmd - Fatal编程技术网

Extjs 将多个独立的通用应用程序合并到一个主应用程序

Extjs 将多个独立的通用应用程序合并到一个主应用程序,extjs,sencha-cmd,Extjs,Sencha Cmd,我们的应用程序应该有一个主应用程序,由多个模块组成,这些模块有自己的git存储库 目标是使用主应用程序,并将模块转换为只应在主应用程序中引用或调用的包。就像C#中的DLL或Angular中的组件一样 现在,我浏览了sencha文档,看到的只是将模块整合到一个目录/工作区中。我们不想这样做,因为模块有自己的repo,“主应用程序”也有自己的存储库 请推荐最佳路径。我想最简单的方法是通过将其添加为workspace.json为每个回购协议中的包定义工作区: { "frameworks&

我们的应用程序应该有一个主应用程序,由多个模块组成,这些模块有自己的git存储库

目标是使用主应用程序,并将模块转换为只应在主应用程序中引用或调用的包。就像C#中的DLL或Angular中的组件一样

现在,我浏览了sencha文档,看到的只是将模块整合到一个目录/工作区中。我们不想这样做,因为模块有自己的repo,“主应用程序”也有自己的存储库


请推荐最佳路径。

我想最简单的方法是通过将其添加为workspace.json为每个回购协议中的包定义工作区:

{
  "frameworks": {
    "ext": "ext"
  },
  "build": {
    "dir": "${workspace.dir}/build"
  },
  "packages": {
    "dir": "${workspace.dir}/packages/local,${workspace.dir}/packages",
    "extract": "${workspace.dir}/packages/remote"
  }
}
现在您需要在/ext下链接(建议使用symlink)或复制框架

假设您具有以下结构

/root/workspace.json
/root/ext
/root/packages/local/yourModule
现在您可以转到/root/packages/local/yourModule 打电话

这将生成包和js文件

您将在下面找到js文件

/root/packages/local/yourModule/build/yourModule.js
/root/packages/local/yourModule/build/yourModule-debug.js
这些文件现在可以从主应用程序按需加载


根据您的需要,您可以通过添加

skip.sass=1 
skip.examples=1
skip.slice=1
skip.pkg =1
在您的package.json中-或对于内部的旧版sencha cmd包

/root/packages/local/yourModule/.sencha/sencha.cfg 

另一种方法是使用另一个构建工具

您需要在内部执行以下操作:

/root/packages/local/yourModule/src

  • (将文件按正确顺序排列)
  • 海螺
  • 删除空白*
  • 丑陋的*
星形表示仅与模块(包)的调试版本相关

这比标准sencha cmd包构建要少


我用grunt成功地试用了它。

也许软件包就是你想要的:嗨@MerlinFejzuli,这就是我现在正在研究的。据我所知,cmd包只有在您有sencha工作区的情况下才能工作,在那里您可以共享代码。在我的例子中,我只想简单地像“包”一样添加模块,而不在主应用程序上添加项目本身。同样,主应用程序将有自己的存储库。更可能的是,我想保持它的松散耦合。你可以托管你创建的包。然后,您可以在应用程序中要求它们。这当然会将它们下载到packages文件夹中,但是你可以忽略这一点(如果你使用的是git,仍然有一些svn用户会不寒而栗),因为你的存储库中没有它。我认为不需要工作区。这是我现在正在尝试的工作区,但我不断得到失败的构建,因为
错误:Sass编译遇到2个错误
。你已经遇到这个问题了吗?没有,你使用哪个构建链?Sencha cmd还是基于节点的(更新的)解决方案?如果使用Sencha cmd,请尝试在./Sencha/Sencha.cfg文件中设置skip.sass=1。(顺便说一句,我使用的是Sencha Cmd 6.x)我使用的是Sencha Cmd,当我在package.json的properties属性中添加skip.sass=1时,它就起作用了。我认为在.sencha文件夹中没有看到任何sencha.cfg文件,因为我使用的是7.3。我计划稍后使用基于节点的解决方案。很高兴听到它在工作。较新的软件包不再使用sencha.cfg。我还没有升级我的。仅供参考,基于节点的构建链仍在幕后使用Sencha cmd。这就是为什么我转向另一种构建工具(如答案中所述),我不喜欢节点解决方案包装sencha cmd,sencha cmd基本上是围绕ant的包装器。为了生成一个js人工制品,它涉及了太多的java,不符合我个人的口味-sencha没有正确地使用节点生态系统。现在,这就可以了。我接受你的回答。我从你那里学到了很多。对我来说,这不是什么大问题,因为使用新的sencha开放工具,您只需要添加npx指令,然后添加sencha cmd命令。谢谢
/root/packages/local/yourModule/.sencha/sencha.cfg