PDA

View Full Version : Compiling using Virtual Directory



existdissolve
13 Nov 2012, 10:06 AM
This may be an incredibly stupid question, but it is possible to compile an app using an extjs library housed in a virtual directory? I have a virtual directory in my app which includes the library I want (currently 4.1.2a).

During development, this setup works just fine. All of the dependencies for my app files are found in the framework, and everything moves along without issues. However, when I compile, I get errors about dependency resolution - e.g., "Failed to resolve dependency Ext.container.Viewport for file..."

Is this possible to do, and if so, what am I missing?

NOTE: I haven't modified either of the .cfg files, and my compile looks like this:



sencha compile -classpath=ext\src,app page -in=index.html -out=build/index.html


EDIT:
I should also mention that:
* When I specify the full path to ext/src in classpath, the compile succeeds, but excludes any app classes
* When I put the library in my application root (no virtual directory), the compile succeeds and resolves all dependencies as expected

I appreciate any help anyone can offer. Thanks!

existdissolve
13 Nov 2012, 11:40 AM
Okay, I believe I have it working. If anyone else is interested, here's the setup I have:

App Structure (Created via CMD)


/myapp
/sencha
/app
/build
/ext (virtual directorty)
/resources


App Sencha.cfg (Not modified)

app.name=MyApp
app.framework=extapp.classpath=${app.dir}/app

Workspace Sencha.cfg (Path changed)


workspace.build.dir=${workspace.dir}/build/${app.name}
ext.dir=ABSOLUTE_PATH_TO_SOURCE/extjs-4.1.3

Compile


sencha compile -classpath=ext\src,app page -in=index.html -out=build/index.html

existdissolve
15 Nov 2012, 10:06 PM
For anyone interested, I did a fuller write-up on this here: http://existdissolve.com/2012/11/virtual-directory-driven-extjs-4-development/

Stormseeker
19 Nov 2012, 9:58 AM
For anyone interested, I did a fuller write-up on this here: http://existdissolve.com/2012/11/virtual-directory-driven-extjs-4-development/

Unfortunately, it doesn't look this works with the full "sencha app build" command since the themeing portions such as compass/sass don't reference the sencha.cfg file but a hard-coded reference to the ext directory. Take a look at "youapp/resources/theme/default/theme.html".

It has a hard-coded reference to ext at the following location: src="../../../ext/ext-all.js".

Also the config.rb for the sass file is looking in the same place. :-/

dongryphon
19 Nov 2012, 2:54 PM
The path to the framework we etch in to the SASS world is computed at theme generation time... so it may work to generate a new theme after changing the configuration of your workspace.

Stormseeker
20 Nov 2012, 10:23 AM
The path to the framework we etch in to the SASS world is computed at theme generation time... so it may work to generate a new theme after changing the configuration of your workspace.

Yup, that seemed to work perfectly. I just replaced the default theme.html file with the newly generated one and all is working. Thanks!

existdissolve
20 Nov 2012, 11:45 AM
Generating the theme after the config change partially works. If you browse the "theme.html" file via the file system, all of the assets will be loaded correctly. However, if you try to access it via a hostname (e.g., dev.somesenchasite.com), your assets may fail to load, depending on where they exist in relation to your site's root.

What I did to get around this is kind of a kludge, but it seems to work. In my theme's config.rb, I changed the $ext_path to the absolute file path for the ExtJS library I want to use. And in theme.html, I set the ext-all.js to a faux-site (dev.senchaassets.com) I setup to allow access to the ExtJS library. This allows me to view the theme.html file via the hostname, but still correctly slices images when compiling SASS during the build process. Sadly, a virtual directory path in theme.html doesn't work when building, even though it works when browsing via the hostname.

While these changes represent a bit more work re: modifying configuration files on a per-app basis, at least it allows me to still maintain an abstract relationship between the library, global assets, and my sites.

If anyone has thoughts on how to better accomplish this, I'd love to hear your ideas.

Thanks!