-
Notifications
You must be signed in to change notification settings - Fork 0
/
build_tools.html
694 lines (545 loc) · 31.3 KB
/
build_tools.html
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<!-- plugin styles -->
<link rel="stylesheet" type="text/css" href="stylesheets/highlight-github.css" />
<!-- guides styles -->
<link rel="stylesheet" type="text/css" href="stylesheets/reset.css" />
<link rel="stylesheet" type="text/css" href="stylesheets/main.css" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="stylesheets/guides.css" />
<link rel="stylesheet" type="text/css" href="stylesheets/overrides.style.css" />
<link rel="stylesheet" type="text/css" href="stylesheets/overrides.print.css" media="print" />
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
<meta name="generator" content="DocPad v6.79.0" />
</head>
<body class="guide">
<header role="banner">
<div class="container">
<h1 id="logo">
<a href="http://www.sproutcore.com"><img src="images/header/logo.png" alt="SproutCore" /></a>
</h1>
<nav role="navigation">
<ul>
<li><a href="http://sproutcore.com/about/">About</a></li>
<li><a href="http://showcase.sproutcore.com">Showcase</a></li>
<li class="active"><a href="http://guides.sproutcore.com">Guides</a></li>
<li><a href="http://docs.sproutcore.com">Docs</a></li>
<li><a href="http://sproutcore.com/community/">Community</a></li>
<li><a href="http://blog.sproutcore.com">Blog</a></li>
</ul>
</nav>
</div>
</header>
<div id="feature">
<div class="wrapper">
<div class="feature_header">
<a href="/"><img src="images/graphics/guides.png"></a>
<h2><a href="/">SproutCore Guides</a></h2>
<p>These guides are designed to help you write and perfect your code.</p>
</div>
<div class="feature_sidebar">
<a href="index.html" id="guidesMenu">
Guides Index <span id="guidesArrow">▸</span>
</a>
<div id="guides" class="clearfix" style="display: none;">
<a href="index.html" class="guidesMenu">
Guides Index <span class="guidesArrow">▾</span>
</a>
<hr style="clear:both;">
<dl class='L'><dt>Start Here</dt>
<dd><a href='/getting_started.html'>Getting Started: Part 1</a></dd>
<dd><a href='/getting_started_2.html'>Getting Started: Part 2</a></dd>
<dd><a href='/getting_started_3.html'>Getting Started: Part 3</a></dd>
<dd><a href='/core_concepts_sc_object.html'>Classes and SC.Object</a></dd>
<dd><a href='/core_concepts_kvo.html'>Computed Properties, Observers and Bindings</a></dd><dt>Views</dt>
<dd><a href='/views.html'>Core View Concepts</a></dd><dt>Models</dt>
<dd><a href='/records.html'>SproutCore Records</a></dd>
<dd><a href='/fixtures.html'>Using Fixtures</a></dd><dt>Theming</dt>
<dd><a href='/chance.html'>Using Chance, SproutCore's CSS Framework</a></dd>
<dd><a href='/theming_app.html'>Theming Your App</a></dd></dl><dl class='R'><dt>Testing</dt>
<dd><a href='/adding_unit_test.html'>Adding a Unit Test</a></dd>
<dd><a href='/unit_test_framework.html'>Unit Testing</a></dd>
<dd><a href='/writing_unit_tests.html'>Writing Unit Tests</a></dd>
<dd><a href='/running_unit_tests.html'>Running Unit Tests</a></dd>
<dd><a href='/todos_tdd.html'>SproutCore Development Using TDD</a></dd><dt>Extras</dt>
<dd><a href='/build_tools.html'>SproutCore's Build Tools</a></dd>
<dd><a href='/run_loop.html'>The Run Loop</a></dd>
<dd><a href='/enumerables.html'>Enumerables</a></dd><dt>Contributing to SproutCore</dt>
<dd><a href='/style_guide.html'>Javascript Guidelines</a></dd>
<dd><a href='/commit_code.html'>Committer Guidelines</a></dd>
<dd><a href='/documentation_guidelines.html'>Documentation Guidelines</a></dd>
<dd><a href='/contribute.html'>Contributing Guides</a></dd><dt>Thanks</dt>
<dd><a href='/credits.html'>Credits</a></dd></dl>
</div>
</div>
</div>
</div>
<div id="container">
<div class="wrapper">
<div id="mainCol">
<div class='headerSection'>
<h2>SproutCore's Build Tools</h2>
<p>After reading this guide, you will be able to:</p>
<ul>
<li>Create a new SproutCore project skeletons using <tt>sproutcore init</tt>.</li>
<li>Add additional apps to a SproutCore project and additional views, controllers, models and unit tests to a SproutCore app using <tt>sproutcore gen</tt>.</li>
<li>Configure your apps using <tt>Buildfiles</tt>.</li>
<li>Use SproutCore's server and proxy, <tt>sproutcore server</tt>, for development and testing.</li>
<li>Build a SproutCore app for production deployment using <tt>sproutcore build</tt>.</li>
</ul>
</div>
<h3 id='-Introduction-'>1 - Introduction
</h3>
<p>Many JavaScript frameworks use some kind of development environment,
such as grunt, gulp, webpack or rollup. The reason for this is that it quickly
becomes too difficult and time consuming to manage multiple source files and
assets; there are several important optimizations required for deploying
top-of-class web experiences that are best left to automated scripts.</p>
<p>SproutCore provides its own development environment, called build tools,
or BT for short.</p>
<p>BT provides the following and more:</p>
<ul>
<li>Automatically scans your source code and builds a manifest of how your code
should be built into a final project. This ensures that your JavaScript and
CSS always load in the proper order.</li>
<li>Run stylesheets through the <a href="http://compass-style.org/">Compass CSS Authoring
Framework</a> for simple and clean CSS.</li>
<li>Proxies XHR requests to avoid same-origin policy restrictions while
developing.</li>
<li>Applies localization rules to automatically build different language
variations of your project.</li>
<li>Inserts cache-friendly URLs on build for any assets (such as images) that you
may want to load.</li>
<li>Builds your JavaScript files and stylesheets into a single JavaScript and a
single CSS file and minifies the contents of each. This makes your deployed
app load much faster since multiple smaller requests are slower for the
clients.</li>
</ul>
<p>For a list of the available commands, type <tt>sproutcore</tt> on the command line
after installing the SproutCore gem:</p>
<pre class="highlighted"><div class="code_container"><code class="hljs bash">$ sproutcore
Usage: sproutcore [options] [<span class="hljs-built_in">command</span>]
Options:
-V, --version output the version number
-h, --<span class="hljs-built_in">help</span> output usage information
Commands:
install [git-repo] Install a repository, such as a framework
serve Start the development server
build [app1] Start the building process of one or more apps
gen <name> Generate project structure or parts of it
init <name> [path] Generate new project structure and app with the same name and an optional path
<span class="hljs-built_in">help</span> [cmd] display <span class="hljs-built_in">help</span> <span class="hljs-keyword">for</span> [cmd]</code></div></pre>
<h3 id='-Generating-a-New-SproutCore-Project---tt-sproutcore-init--tt--'>2 - Generating a New SproutCore Project: <tt>sproutcore init</tt>
</h3>
<p>To create a new basic SproutCore project simply use <tt>sproutcore init</tt> or its
short form equivalent, <tt>sc-init</tt>, and supply a project name and optional
path where to create it. If you don't supply the path parameter, the project
will be created in a directory of the same name in the current directory.
By default an application of the same name will be created in the projects
app folder. Any additional app can be created using the <code>gen</code> command:</p>
<pre class="highlighted"><div class="code_container"><code class="hljs bash">$ sproutcore init MediaTools
Your project has been successfully created!
$ <span class="hljs-built_in">cd</span> MediaTools
$ sproutcore gen VideoEditor</code></div></pre>
<h3 id='-Generating-Additional-SproutCore-Files---tt-sproutcore-gen--tt--'>3 - Generating Additional SproutCore Files: <tt>sproutcore gen</tt>
</h3>
<p>The command <code>sproutcore init</code> creates a few default files for you
that form a typical starting point for a new project, but you will soon need
other files and this is where the command <tt>sproutcore gen</tt> can come in.</p>
<h4 id='--tt-sproutcore-gen-app-AppName--tt--'>3.1 - <tt>sproutcore gen app AppName</tt>
</h4>
<p>When called from within a project, adds an app to the project with the
namespace <code>AppName</code>.</p>
<h3 id='-Configuring-SproutCore-Applications---tt-sc-config--tt--'>4 - Configuring SproutCore Applications: <tt>sc_config</tt>
</h3>
<p>The operations of the build tools are configured via the project, framework and
app sc_config files. If you used the previous commands, you will find a sc_config
within your root project directory and a sc_config in each of your app
directories.</p>
<p>Before we look at the contents of the configuration files, it is important to realize
that the BT essentially functions in two modes: a 'debug' mode and a 'build' mode.
The debug mode is the mode where the BT is used to provide a dev server. The
build mode is the mode when you use the BT to generate HTML, CSS and JS files on disk.</p>
<p>We start by looking at the sc_config file in the application directory root. The default file
generated by the BT looks like this:</p>
<pre class="highlighted"><div class="code_container"><code class="hljs javascript"><span class="hljs-keyword">var</span> TodosOne = BT.AppBuilder.create({
<span class="hljs-attr">name</span>: <span class="hljs-string">'TodosOne'</span>,
<span class="hljs-attr">path</span>: dirname(),
<span class="hljs-attr">title</span>: <span class="hljs-string">'TodosOne'</span>,
<span class="hljs-attr">frameworks</span>: [],
<span class="hljs-attr">languages</span>: [<span class="hljs-string">'en'</span>],
});</code></div></pre>
<p>The following list describes the most common properties.</p>
<h4 id='--tt-name---TodosOne---tt--'>4.1 - <tt>name: 'TodosOne'</tt>
</h4>
<p>The name of the project as it should be recognized by the BT. Any files created
during the build phase will carry this name, as well as the base url in the
dev server.</p>
<h4 id='--tt-path--dirname----tt--'>4.2 - <tt>path: dirname()</tt>
</h4>
<p>By default <code>dirname()</code> will fill in the current path of the sc_config file. There
can be reasons to have the BT load a different path for this app.</p>
<h4 id='--tt-title---TodosOne---tt--'>4.3 - <tt>title: 'TodosOne'</tt>
</h4>
<p>The title you want the app to have in the generated HTML.</p>
<h4 id='--tt-frameworks------tt--'>4.4 - <tt>frameworks: []</tt>
</h4>
<p>The list of frameworks your app depends on. A default set of SproutCore frameworks will be
included by default. The BT will look for the frameworks in the projects frameworks folder.
Using the name of the framework folder is usually sufficient. In case you want to be
selective, and only use selected frameworks from a frameworks bundle (such as SproutCore),
use <code>:</code> to seperate the framework names. To use the experimental select views framework for
example, you would include <code>'sproutcore:experimental:select_ext'</code> in the frameworks list.</p>
<h4 id='--tt-languages------tt--'>4.5 - <tt>languages: []</tt>
</h4>
<p>List of languages this app will support.</p>
<h4 id='--tt-language---String---tt--'>4.6 - <tt>language: {String}</tt>
</h4>
<p>Which language the BT will use when serving the app through the dev server.</p>
<h4 id='--tt-theme---String---tt--'>4.7 - <tt>theme: {String}</tt>
</h4>
<p>The theme your application will use. The default is <code></code>sproutcore:aki'`.</p>
<h4 id='--tt-buildNumber------tt--'>4.8 - <tt>buildNumber: ''</tt>
</h4>
<p>By default, the build project assets will get cache friendly paths containing a
unique build number. This is necessary to ensure that the files are properly
cached, but you can specify a custom build number with this setting.</p>
<div class='warning'><p> Using a fixed build_number will cause cached assets to not be
invalidated. Use this setting with caution.
</p></div>
<h4 id='--tt-combineScripts---Boolean---tt--'>4.9 - <tt>combineScripts: {Boolean}</tt>
</h4>
<p>Whether the BT should combine the scripts in a single file. By default, this
setting is false in debug mode, and true in build mode. Setting <code>combineScripts</code>
to <code>false</code> will prevent the combining in build mode, which may be useful for debugging purposes.</p>
<h4 id='--tt-combineStylesheets---Boolean---tt--'>4.10 - <tt>combineStylesheets: {Boolean}</tt>
</h4>
<p>By default, the BT in build mode combines all the CSS files into a single file.
Setting <code>combineStylesheets</code> to <code>false</code> will prevent this from happening,
which may be useful for debugging purposes.</p>
<h4 id='--tt-minifyScripts---Boolean---tt--'>4.11 - <tt>minifyScripts: {Boolean}</tt>
</h4>
<p>By default, the BT in build mode will minify all scripts.
Setting <code>minifyScripts</code> to <code>false</code> will prevent this from happening,
which may be useful for debugging purposes.</p>
<h4 id='--tt-minifyStylesheets---Boolean---tt--'>4.12 - <tt>minifyStylesheets: {Boolean}</tt>
</h4>
<p>By default, the BT in build mode will minify all stylesheets.
Setting <code>minifyStylesheets</code> to <code>false</code> will prevent this from happening,
which may be useful for debugging purposes.</p>
<h4 id='--tt-contentForPageStyles---String---tt--'>4.13 - <tt>contentForPageStyles: {String}</tt>
</h4>
<p>Insert here any HTML which should be inserted together with the styles.</p>
<h4 id='--tt-contentForPageJavaScript---String---tt--'>4.14 - <tt>contentForPageJavaScript: {String}</tt>
</h4>
<p>Use this to include script tags to third party scripts not to be included
in the HTML, CSS and JS files generated by the BT.</p>
<h3 id='-Developing-with-SproutCore---tt-sproutcore-serve--tt--'>5 - Developing with SproutCore: <tt>sproutcore serve</tt>
</h3>
<p>So that you can view and test your code in action immediately, the build tools
also provide a local server and proxy. As was mentioned in <a href="/getting_started.html">Getting
Started</a>, you run the server by changing to your
project's directory and running <tt>sproutcore serve</tt>.
The server will monitor your files for changes and re-build them when
they do change. To keep the process fast and to allow you to debug your code
while developing, the individual files aren't packed or minified in debug mode.
When your server is running, you can access your apps at
<a href="http://localhost:4020">http://localhost:4020</a> or a specific app at <a href="http://localhost:4020/app_name">http://localhost:4020/app_name</a>.</p>
<p>The server also includes a proxy that is configurable within the project's
Buildfile. Without a proxy, XHR requests will fail since the origin of your
test page, <a href="http://localhost:4020">http://localhost:4020</a> will not match the origin of your
backend server (ex. <a href="https://my-private-api.com:8080">https://my-private-api.com:8080</a>) and the
browser will consequently reject the request. Therefore, if you want to load
data from your backend from a URL like <a href="https://my-private-api.com:8080/users/3">https://my-private-api.com:8080/users/3</a>,
your XHR request must be to <a href="/http://locahost:4020/users/3">/users/3</a> and you
will use the SproutCore server to proxy the request across.</p>
<p>Here are some examples configuring the SproutCore server proxy:</p>
<pre class="highlighted"><div class="code_container"><code class="hljs javascript"><span class="hljs-comment">// filename: my_project/sc_config</span>
BT.serverConfig = {
<span class="hljs-attr">proxies</span>: [
<span class="hljs-comment">// Proxy all requests for '/news' to 'http://news.com/news'.</span>
{
<span class="hljs-attr">prefix</span>: <span class="hljs-string">'/news'</span>, <span class="hljs-comment">// set a prefix here for the development server</span>
host: <span class="hljs-string">'news.com'</span>, <span class="hljs-comment">// to which host should the request be forwarded</span>
port: <span class="hljs-number">80</span>, <span class="hljs-comment">// on which port is the host listening?</span>
logRequests: <span class="hljs-literal">false</span>, <span class="hljs-comment">// show the requests in the terminal?</span>
proxyPrefix: <span class="hljs-string">'/news'</span> <span class="hljs-comment">// replace the prefix set above with this</span>
},
<span class="hljs-comment">// Proxy all requests for '/session' to 'https://session-server.net/session'.</span>
{
<span class="hljs-attr">prefix</span>: <span class="hljs-string">'/session'</span>, <span class="hljs-comment">// set a prefix here for the development server</span>
host: <span class="hljs-string">'session-server.net'</span>, <span class="hljs-comment">// to which host should the request be forwarded</span>
port: <span class="hljs-number">443</span>, <span class="hljs-comment">// on which port is the host listening?</span>
logRequests: <span class="hljs-literal">false</span>, <span class="hljs-comment">// show the requests in the terminal?</span>
proxyPrefix: <span class="hljs-string">'/session'</span> <span class="hljs-comment">// replace the prefix set above with this</span>
secure: <span class="hljs-literal">true</span>,
},
<span class="hljs-comment">// Proxy all requests not matching anything in the BT to 'https://session-server.net/session'.</span>
{
<span class="hljs-attr">prefix</span>: <span class="hljs-string">'/'</span>, <span class="hljs-comment">// set a prefix here for the development server</span>
host: <span class="hljs-string">'session-server.net'</span>, <span class="hljs-comment">// to which host should the request be forwarded</span>
port: <span class="hljs-number">443</span>, <span class="hljs-comment">// on which port is the host listening?</span>
logRequests: <span class="hljs-literal">false</span>, <span class="hljs-comment">// show the requests in the terminal?</span>
proxyPrefix: <span class="hljs-string">'/session'</span> <span class="hljs-comment">// replace the prefix set above with this</span>
secure: <span class="hljs-literal">true</span>,
},
]
}
</code></div></pre>
<div class='note'><p> When changing proxy settings, the dev server needs to be restarted to
reflect the changes.
</p></div>
<h3 id='-Building-a-SproutCore-Application---tt-sproutcore-build--tt--'>6 - Building a SproutCore Application: <tt>sproutcore build</tt>
</h3>
<p>Finally, when your application is ready to be deployed to a real server, you
will do a production build and move the files across to be hosted. Depending
on the options you set in your sc_config file, this will generate some variant of
static deployable and cache-able content.</p>
<p>Ex. Building all apps and required frameworks within a project.</p>
<pre class="highlighted"><div class="code_container"><code class="hljs bash">$ sproutcore build</code></div></pre>
<p>Ex. Building a specific app within a project, including it's required frameworks.</p>
<pre class="highlighted"><div class="code_container"><code class="hljs armasm">$ sproutcore <span class="hljs-keyword">build </span>my_app</code></div></pre><p>We take one last look at the sc_config file in your project directory.
You will notice the familiar <code>sc_require()</code> call in the top of the file.
The BT will not include any app in your project unless you specifically indicate
you want to include it. If you want to temporarily remove an app from the project,
simply comment out the sc_require line from the projects sc_config file.</p>
<p>Here are some useful settings:</p>
<h4 id='--tt-port---Number---tt--'>6.1 - <tt>port: {Number}</tt>
</h4>
<p>Set this to the port you want to run the dev server on. The default value is 4020.
You can temporarily override this setting on the command line:</p>
<pre class="highlighted"><div class="code_container"><code class="hljs bash">sproutcore serve -p 4021</code></div></pre>
<h4 id='--tt-localOnly---Boolean---tt--'>6.2 - <tt>localOnly: {Boolean}</tt>
</h4>
<p>By default, the dev server will only be available on your computers special
localhost domain, and therefore hidden for the rest of the network you might be in.
If you want to be able to test your application from a different computer, set
the localOnly value to false and restart the dev server. This will make the
dev server listen on the defined port on all network interfaces.</p>
<div class='warning'><p> Do not use this feature to host a sproutcore application for production
purposes! Any normal web server hosting a built SproutCore application will
outperform the dev server by miles and will be much more secure.
</p></div>
<pre class="highlighted"><div class="code_container"><code class="hljs javascript">sc_require(<span class="hljs-string">'apps/TodosOne/sc_config'</span>)
<span class="hljs-comment">/*
Please don't remove the following server configuration, as the build tools use it to
determine the root of your project.
*/</span>
BT.serverConfig = {
<span class="hljs-comment">/**
The port on which the development server should run
@property
@type Number
@default 4020
*/</span>
port: <span class="hljs-number">4020</span>,
<span class="hljs-comment">/**
Set it to false to allow access from the network.
@property
@type Boolean
@default true
*/</span>
localOnly: <span class="hljs-literal">true</span>,
<span class="hljs-comment">/**
A JSON file to use to store build numbers.
You must define this property to enable build number support.
Example:
buildNumberPath: 'build_number.json',
@property
@type String
@default null
*/</span>
buildNumberPath: <span class="hljs-literal">null</span>,
<span class="hljs-comment">/**
Define this property if you need one or more proxies.
If you do a request from your app (file or XHR) which doesn't match anything the BT provide,
the request will be run past the proxies in the order you define them here.
You can use the prefix to filter which requests will be forwarded to where.
In the proxied request the prefix you define will be replaced by the proxyPrefix.
The example shows how to set up a catch-all proxy, in this case to CouchDB.
You can set as many proxies as you want, as long as they don't share a prefix.
Example:
proxies: [
{
prefix: '/', // set a prefix here for the development server
host: 'localhost', // to which host should the request be forwarded
port: 5984, // on which port is the host listening?
logRequests: false, // show the requests in the terminal?
proxyPrefix: '/' // replace the prefix set above with this
}
]
@property
@type Array
@default null
*/</span>
proxies: <span class="hljs-literal">null</span>
}
</code></div></pre>
<h3 id='-Changelog-'>7 - Changelog
</h3>
<ul>
<li>February 27, 2012: initial version by <a href="credits.html#publickeating">Tyler Keating</a></li>
<li>February 28, 2012: added some documentation on sc-server & sc-build by <a href="credits.html#publickeating">Tyler Keating</a></li>
<li>December 17, 2012: added note about changing proxy settings by <a href="credits.html#apechimp">Mike Atkins</a></li>
<li>July 14, 2013: converted to Markdown format for DocPad guides by <a href="credits.html#topherfangio">Topher Fangio</a></li>
<li>January 17, 2019: Updated to document the NodeJS based BT by <a href="credits.html#mauritslamers">Maurits Lamers</a></li>
</ul>
</div>
<!-- TODO: re-add index_items //-->
<div id="subCol">
<h3 class="chapter"><img src="images/graphics/chapters.png" alt="">Chapters</h3>
<ol class='chapters'>
<li>
<a href='#-Introduction-'><p> Introduction
</p></a>
<ul>
</ul>
</li>
<li>
<a href='#-Generating-a-New-SproutCore-Project---tt-sproutcore-init--tt--'><p> Generating a New SproutCore Project: <tt>sproutcore init</tt>
</p></a>
<ul>
</ul>
</li>
<li>
<a href='#-Generating-Additional-SproutCore-Files---tt-sproutcore-gen--tt--'><p> Generating Additional SproutCore Files: <tt>sproutcore gen</tt>
</p></a>
<ul>
<li><a href='#--tt-sproutcore-gen-app-AppName--tt--'><p> <tt>sproutcore gen app AppName</tt>
</p></a></li>
</ul>
</li>
<li>
<a href='#-Configuring-SproutCore-Applications---tt-sc-config--tt--'><p> Configuring SproutCore Applications: <tt>sc_config</tt>
</p></a>
<ul>
<li><a href='#--tt-name---TodosOne---tt--'><p> <tt>name: 'TodosOne'</tt>
</p></a></li>
<li><a href='#--tt-path--dirname----tt--'><p> <tt>path: dirname()</tt>
</p></a></li>
<li><a href='#--tt-title---TodosOne---tt--'><p> <tt>title: 'TodosOne'</tt>
</p></a></li>
<li><a href='#--tt-frameworks------tt--'><p> <tt>frameworks: []</tt>
</p></a></li>
<li><a href='#--tt-languages------tt--'><p> <tt>languages: []</tt>
</p></a></li>
<li><a href='#--tt-language---String---tt--'><p> <tt>language: {String}</tt>
</p></a></li>
<li><a href='#--tt-theme---String---tt--'><p> <tt>theme: {String}</tt>
</p></a></li>
<li><a href='#--tt-buildNumber------tt--'><p> <tt>buildNumber: ''</tt>
</p></a></li>
<li><a href='#--tt-combineScripts---Boolean---tt--'><p> <tt>combineScripts: {Boolean}</tt>
</p></a></li>
<li><a href='#--tt-combineStylesheets---Boolean---tt--'><p> <tt>combineStylesheets: {Boolean}</tt>
</p></a></li>
<li><a href='#--tt-minifyScripts---Boolean---tt--'><p> <tt>minifyScripts: {Boolean}</tt>
</p></a></li>
<li><a href='#--tt-minifyStylesheets---Boolean---tt--'><p> <tt>minifyStylesheets: {Boolean}</tt>
</p></a></li>
<li><a href='#--tt-contentForPageStyles---String---tt--'><p> <tt>contentForPageStyles: {String}</tt>
</p></a></li>
<li><a href='#--tt-contentForPageJavaScript---String---tt--'><p> <tt>contentForPageJavaScript: {String}</tt>
</p></a></li>
</ul>
</li>
<li>
<a href='#-Developing-with-SproutCore---tt-sproutcore-serve--tt--'><p> Developing with SproutCore: <tt>sproutcore serve</tt>
</p></a>
<ul>
</ul>
</li>
<li>
<a href='#-Building-a-SproutCore-Application---tt-sproutcore-build--tt--'><p> Building a SproutCore Application: <tt>sproutcore build</tt>
</p></a>
<ul>
<li><a href='#--tt-port---Number---tt--'><p> <tt>port: {Number}</tt>
</p></a></li>
<li><a href='#--tt-localOnly---Boolean---tt--'><p> <tt>localOnly: {Boolean}</tt>
</p></a></li>
</ul>
</li>
<li>
<a href='#-Changelog-'><p> Changelog
</p></a>
<ul>
</ul>
</li>
</ol>
</div>
</div>
</div>
<hr class="hide" />
<footer>
<div class="container">
<div class="col">
<a href="index.html"><img src="images/footer/sc_logo_medium.png" alt="SproutCore" /></a>
<p id="license">
SproutCore framework is under MIT License.
</p>
</div>
<nav class="col">
<h1>Site Navigation</h1>
<ul>
<li><a href="http://www.sproutcore.com/about/">About</a></li>
<li><a href="http://docs.sproutcore.com">Docs</a></li>
<li><a href="http://blog.sproutcore.com">Blog</a></li>
<li><a href="http://www.sproutcore.com/install/?redirect=1">Download</a></li>
<li><a href="http://www.sproutcore.com/community/">Community</a></li>
<li><a href="https://github.com/sproutcore/sproutcore">GitHub</a></li>
<li><a href="mailto:community@sproutcore.com">Contact Us</a></li>
<li><a href="http://guides.sproutcore.com">Guides</a></li>
</ul>
<a href="http://www.w3.org/html/logo/"><img src="images/footer/html5_tech.png" alt="HTML5 Powered" /></a>
</nav>
<div class="col">
<h1>Get in Touch, Stay Informed</h1>
<ul class="social">
<li><a href="http://twitter.com/sproutcore"><img src="images/footer/twitter.png" alt="Twitter" /></a></li>
<li><a href="http://www.facebook.com/sproutcore"><img src="images/footer/facebook.png" alt="Facebook" /></a></li>
<li><a href="http://groups.google.com/group/sproutcore"><img src="images/footer/google.png" alt="Google Groups" /></a></li>
<li><a href="http://groups.google.com/group/sproutcore">Subscribe To Mailing List</a></li>
</ul>
<a href="http://eepurl.com/dK1-Y" target="_blank" id="newsletter" class="button secondary">Sign Up For Our Newsletter!</a>
<!-- Commented out until we have mailchimp API integration.
<h2>Subscribe To Newsletter</h2>
<div id="subscribe">
<form>
<input type="text" name="email" />
<button name="subscribe">Sign-Up</button>
<div class="processing"><img src="/img/spinner.gif"></div>
<div class="error"></div>
</form>
</div>
-->
</div>
<a href="#feature" class="top">Back To Top</a>
</div>
</footer>
<script type='text/javascript' src='/javascripts/jquery.min.js'></script>
<script type='text/javascript'>
/*
* Make the guides link clickable
*/
function guideMenu(e){
if (document.getElementById('guides').style.display == "none") {
document.getElementById('guides').style.display = "block";
document.getElementById('guidesArrow').innerHTML = "▾";
$('body').click(function(e){ guideMenu(e); });
} else {
document.getElementById('guides').style.display = "none";
document.getElementById('guidesArrow').innerHTML = "▸";
$('body').unbind('click');
}
return false;
}
$('#guidesMenu, .guidesMenu').click(guideMenu);
</script>
</body>
</html>