Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: docs/closure_compilation.md

Issue 1780873002: Closure: more v2-specific changes, typo and rendering fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@closure-doc2
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Closure Compilation 1 # Closure Compilation
2 2
3 ## I just need to fix the compile! 3 ## I just need to fix the compile!
4 4
5 ### Pre-requisites 5 ### Pre-requisites
6 6
7 You'll need Java 7 (preferably the OpenJDK version). To install on Ubuntu: 7 You'll need Java 7 (preferably the OpenJDK version). To install on Ubuntu:
8 8
9 ```shell 9 ```shell
10 sudo apt-get install openjdk-7-jre 10 sudo apt-get install openjdk-7-jre
11 ``` 11 ```
12 12
13 On Mac or Windows, visit: 13 On Mac or Windows, visit:
14 [http://www.oracle.com/technetwork/java/javase/downloads/index.html](http://www. oracle.com/technetwork/java/javase/downloads/index.html) 14 [http://www.oracle.com/technetwork/java/javase/downloads/index.html](http://www. oracle.com/technetwork/java/javase/downloads/index.html)
15 15
16 ### Using ninja to compile the code 16 ### Using ninja to compile the code
17 17
18 We use GYP and ninja as our build system. To generate the ninja files from GYP: 18 We use GYP and ninja as our build system. To generate the ninja files from GYP:
19 19
20 ```shell 20 ```shell
21 # notice the 2 in compiled_resources.gyp 21 # notice the 2 in compiled_resources2.gyp
22 GYP_GENERATORS=ninja tools/gyp/gyp --depth . third_party/closure_compiler/compil ed_resources2.gyp 22 GYP_GENERATORS=ninja tools/gyp/gyp --depth . third_party/closure_compiler/compil ed_resources2.gyp
23 ``` 23 ```
24 24
25 To compile the JavaScript: 25 To compile the JavaScript:
26 26
27 ```shell 27 ```shell
28 ninja -C out/Default -j4 28 ninja -C out/Default -j4
29 ``` 29 ```
30 30
31 The output should look something like this: 31 The output should look something like this:
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 and `src/my_product/my_file.js` contains: 93 and `src/my_product/my_file.js` contains:
94 94
95 ```javascript 95 ```javascript
96 /** @type {number} */ var mensa = wit + 50; 96 /** @type {number} */ var mensa = wit + 50;
97 alert(mensa); // '100 IQ50' instead of 150 97 alert(mensa); // '100 IQ50' instead of 150
98 ``` 98 ```
99 99
100 In order to check that our code acts as we'd expect, we can create a 100 In order to check that our code acts as we'd expect, we can create a
101 101
102 my_project/compiled_resources.gyp 102 my_project/compiled_resources2.gyp
103 103
104 with the contents: 104 with the contents:
105 105
106 ``` 106 ```
107 # Copyright 2015 The Chromium Authors. All rights reserved. 107 # Copyright 2016 The Chromium Authors. All rights reserved.
108 # Use of this source code is governed by a BSD-style license that can be 108 # Use of this source code is governed by a BSD-style license that can be
109 # found in the LICENSE file. 109 # found in the LICENSE file.
110 { 110 {
111 'targets': [ 111 'targets': [
112 { 112 {
113 'target_name': 'my_file', # file name without ".js" 113 'target_name': 'my_file', # file name without ".js"
114 114 'dependencies': [ # No need to specify empty lists.
115 'variables': { # Only use if necessary (no need to specify empty lists). 115 '../compiled_resources2.gyp:other_file',
116 'depends': [ 116 '<(EXTERNS_GYP):any_needed_externs' # e.g. chrome.send(), chrome.app.wi ndow, etc.
117 'other_file.js', # or 'other_project/compiled_resources.gyp:target', 117 ],
118 ], 118 'includes': ['../third_party/closure_compiler/compile_js2.gypi'],
119 'externs': [
120 '<(CLOSURE_DIR)/externs/any_needed_externs.js' # e.g. chrome.send(), chrome.app.window, etc.
121 ],
122 },
123
124 'includes': ['../third_party/closure_compiler/compile_js.gypi'],
125 }, 119 },
126 ], 120 ],
127 } 121 }
128 ``` 122 ```
129 123
130 You should get results like: 124 You should get results like:
131 125
132 ``` 126 ```
133 (ERROR) Error in: my_project/my_file.js 127 (ERROR) Error in: my_project/my_file.js
134 ## /my/home/chromium/src/my_project/my_file.js:1: ERROR - initializing variable 128 ## /my/home/chromium/src/my_project/my_file.js:1: ERROR - initializing variable
(...skipping 12 matching lines...) Expand all
147 /third_party/closure_compiler/compiled_resources.gyp 141 /third_party/closure_compiler/compiled_resources.gyp
148 like this: 142 like this:
149 143
150 ``` 144 ```
151 { 145 {
152 'targets': [ 146 'targets': [
153 { 147 {
154 'target_name': 'compile_all_resources', 148 'target_name': 'compile_all_resources',
155 'dependencies': [ 149 'dependencies': [
156 # ... other projects ... 150 # ... other projects ...
157 ++ '../my_project/compiled_resources.gyp:*', 151 ++ '../my_project/compiled_resources2.gyp:*',
158 ], 152 ],
159 } 153 }
160 ] 154 ]
161 } 155 }
162 ``` 156 ```
163 157
164 and the 158 and the
165 [Closure compiler bot](http://build.chromium.org/p/chromium.fyi/builders/Closure %20Compilation%20Linux) 159 [Closure compiler bot](http://build.chromium.org/p/chromium.fyi/builders/Closure %20Compilation%20Linux)
166 will [re-]compile your code whenever relevant .js files change. 160 will [re-]compile your code whenever relevant .js files change.
167 161
168 ## Using Compiled JavaScript 162 ## Using Compiled JavaScript
169 163
170 Compiled JavaScript is output in 164 Compiled JavaScript is output in
171 `src/out/<Debug|Release>/gen/closure/my_project/my_file.js` along with a source 165 `src/out/<Debug|Release>/gen/closure/my_project/my_file.js` along with a source
172 map for use in debugging. In order to use the compiled JavaScript, we can create 166 map for use in debugging. In order to use the compiled JavaScript, we can create
173 a 167 a
174 168
175 my_project/my_project_resources.gpy 169 my_project/my_project_resources.gyp
176 170
177 with the contents: 171 with the contents:
178 172
179 ``` 173 ```
180 # Copyright 2015 The Chromium Authors. All rights reserved. 174 # Copyright 2015 The Chromium Authors. All rights reserved.
181 # Use of this source code is governed by a BSD-style license that can be 175 # Use of this source code is governed by a BSD-style license that can be
182 # found in the LICENSE file. 176 # found in the LICENSE file.
183 177
184 { 178 {
185 'targets': [ 179 'targets': [
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 with the contents: 212 with the contents:
219 213
220 ``` 214 ```
221 <?xml version="1.0" encoding="utf-8"?> 215 <?xml version="1.0" encoding="utf-8"?>
222 <grit-part> 216 <grit-part>
223 <include name="IDR_MY_FILE_GEN_JS" file="${my_file_gen_js}" use_base_dir="fals e" type="BINDATA" /> 217 <include name="IDR_MY_FILE_GEN_JS" file="${my_file_gen_js}" use_base_dir="fals e" type="BINDATA" />
224 </grit-part> 218 </grit-part>
225 ``` 219 ```
226 220
227 In your C++, the resource can be retrieved like this: 221 In your C++, the resource can be retrieved like this:
222
228 ``` 223 ```
229 base::string16 my_script = 224 base::string16 my_script =
230 base::UTF8ToUTF16( 225 base::UTF8ToUTF16(
231 ResourceBundle::GetSharedInstance() 226 ResourceBundle::GetSharedInstance()
232 .GetRawDataResource(IDR_MY_FILE_GEN_JS) 227 .GetRawDataResource(IDR_MY_FILE_GEN_JS)
233 .as_string()); 228 .as_string());
234 ``` 229 ```
235 230
236 ## Debugging Compiled JavaScript 231 ## Debugging Compiled JavaScript
237 232
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 also override the `disabled_closure_args` for more strict compilation. 275 also override the `disabled_closure_args` for more strict compilation.
281 276
282 For example, if you would like to specify multiple sources, strict compilation, 277 For example, if you would like to specify multiple sources, strict compilation,
283 and an output wrapper, you would create a 278 and an output wrapper, you would create a
284 279
285 ``` 280 ```
286 my_project/compiled_resources.gyp 281 my_project/compiled_resources.gyp
287 ``` 282 ```
288 283
289 with contents similar to this: 284 with contents similar to this:
285
290 ``` 286 ```
291 # Copyright 2015 The Chromium Authors. All rights reserved. 287 # Copyright 2015 The Chromium Authors. All rights reserved.
292 # Use of this source code is governed by a BSD-style license that can be 288 # Use of this source code is governed by a BSD-style license that can be
293 # found in the LICENSE file. 289 # found in the LICENSE file.
294 { 290 {
295 'targets' :[ 291 'targets' :[
296 { 292 {
297 'target_name': 'my_file', 293 'target_name': 'my_file',
298 'variables': { 294 'variables': {
299 'source_files': [ 295 'source_files': [
300 'my_file.js', 296 'my_file.js',
301 'my_file2.js', 297 'my_file2.js',
302 ], 298 ],
303 'script_args': ['--no-single-file'], # required to process multiple file s at once 299 'script_args': ['--no-single-file'], # required to process multiple file s at once
304 'closure_args': [ 300 'closure_args': [
305 'output_wrapper=\'(function(){%output%})();\'', 301 'output_wrapper=\'(function(){%output%})();\'',
306 'jscomp_error=reportUnknownTypes', # the following three provide m ore strict compilation 302 'jscomp_error=reportUnknownTypes', # the following three provide m ore strict compilation
307 'jscomp_error=duplicate', 303 'jscomp_error=duplicate',
308 'jscomp_error=misplacedTypeAnnotation', 304 'jscomp_error=misplacedTypeAnnotation',
309 ], 305 ],
310 'disabled_closure_args': [], # remove the disabled closure args for more strict compilation 306 'disabled_closure_args': [], # remove the disabled closure args for more strict compilation
311 }, 307 },
312 'includes': ['../third_party/closure_compiler/compile_js.gypi'], 308 'includes': ['../third_party/closure_compiler/compile_js.gypi'],
313 }, 309 },
314 ], 310 ],
315 } 311 }
316 ``` 312 ```
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698