Bonjour à tous,
En ce vendredi matinal je voudrais revenir sur un problème récurrent avec notre Framework préféré : la création de builds optimisées personnalisées aux projets que nous développons.
Comme la dernière bêta est sortie (1.7.0 b5 - release le 29 aout), je voulais la tester sur mon projet. N'ayant pas fait de build depuis longtemps, j'ai d'abord essayé de me servir de l'outil online : http://build.dojotoolkit.org/
Ok c'est bien beau mais déjà il n'y a pas les version bêta et de plus pas moyen d'utiliser l'analyseur pour qu'il me crée un profile. Je suis obligé de tout rentrer à la main un à un : fastidieux mais fonctionnel.
Bon alors à ce moment là je décide de créer un profile.js perso appelons le custom.profile.js :
Déjà je ne sais pas si je m'y prends bien (la doc est ancienne et dénuée d'exemples concrets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 dependencies = { optimize:"shrinksafe", cssOptimize:"comments.keepLines", releaseName:"test", mini:"false", layers: [ { name: "custom_dojo.js", dependencies: [ "dojo.dnd.Source", "dojo.io.iframe", "dojo.parser", "dojo.store.Memory", "dojo.store.Observable", "dojo.data.ObjectStore", "dojo.date.locale", "dojo.data.ItemFileReadStore", "dojo.data.ItemFileWriteStore", "dijit.Calendar", "dijit.ColorPalette", "dijit.ProgressBar", "dijit.TitlePane", "dijit.Tooltip", "dijit.Tree", "dijit.tree.dndSource", "dijit.tree.ForestStoreModel", "dijit.Menu", "dijit.MenuItem", "dijit.MenuBar", "dijit.MenuBarItem", "dijit.PopupMenuItem", "dijit.PopupMenuBarItem", "dijit.Editor", "dijit.InlineEditBox", "dijit.form.Button", "dijit.form.ComboButton", "dijit.form.DateTextBox", "dijit.form.DropDownButton", "dijit.form.Form", "dijit.form.FilteringSelect", "dijit.form.RadioButton", "dijit.form.TextBox", "dijit.form.ComboBox", "dijit.form.ValidationTextBox", "dijit.layout.AccordionContainer", "dijit.layout.AccordionPane", "dijit.layout.ContentPane", "dijit.layout.TabContainer", "dijit.layout.BorderContainer", "dijit.Dialog", "dojo.parser", "dijit.Dialog", "dojox.encoding.digests.SHA1", "dojox.form.FileInputAuto", "dojox.form.Uploader", "dojox.form.uploader.FileList", "dojox.form.uploader.plugins.IFrame", "dojox.grid.EnhancedGrid", "dojox.grid.enhanced.plugins.CellMerge", "dojox.grid.enhanced.plugins.DnD", "dojox.grid.enhanced.plugins.Menu", "dojox.grid.enhanced.plugins.Menu", "dojox.grid.enhanced.plugins.NestedSorting", "dojox.grid.enhanced.plugins.IndirectSelection", "dojox.grid.DataGrid", "dojox.json.ref", "dojox.layout.FloatingPane" ] } ], prefixes: [ [ "dojo", "../dojo" ], [ "dijit", "../dijit" ], [ "dojox", "../dojox" ] ] }
Ensuite j'ai cherché un tuto ici : http://mikael-morvan.developpez.com/...pt/dojo/build/
J'ai donc fais une ébauche de build.xml comme il le dit mais lorsque j'exécute j'ai ça :
Super vous me direz mais ce code est mensonger je n'ai aucune build nulle part de créée (en 437 ms tu m'étonnes !).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Buildfile: C:\Documents and Settings\username\My Documents\Aptana Studio 3 Workspace\test\build.xml packaging: [java] js: Couldn't open file "./jslib/buildUtil.js". [java] js: uncaught JavaScript runtime exception: ReferenceError: "buildUtil" n'est pas défini [java] Java Result: 3 BUILD SUCCESSFUL Total time: 437 milliseconds
J'ai bien sûr également commencé par essayer un truc plus simple :
- mettre le custom.profile.js dans le répertoire util\buildscripts\profiles
- exécuter build.bat profile=custom (ou quoi que ce soit d'autre d'ailleurs)
Réponse :
Voilà donc là je sèche pour faire une build de cette bêta adaptée à mon projet (le moins de HTTPRequest possible pour un lancement rapide).C:\Documents and Settings\username\Desktop\dojo\util\buildscripts>java -Xms256m -X
mx256m -cp ../shrinksafe/js.jar;../closureCompiler/compiler.jar;../shrinksafe/s
hrinksafe.jar org.mozilla.javascript.tools.shell.Main ../../dojo/dojo.js baseUr
l=../../dojo load=build profile=custom
running under rhino
js: "<eval'ed string>#1(Function)#1(eval)", line 125: uncaught JavaScript runtim
e exception: TypeError: Cannot read property "length" from undefined
at <eval'ed string>#1(Function)#1(eval):125
at <eval'ed string>#1(Function)#1(eval):153
at <eval'ed string>#1(Function)#1(eval):187
at <eval'ed string>#1(Function)#1(eval):124
at <eval'ed string>#1(Function)#1(eval):103
at <eval'ed string>#1(Function)#1(eval):84
Merci à ceux qui me liront et qui m'aideront.
Charlie.
Partager