Skip to content

Commit fe803e5

Browse files
committed
chore(Rakefile): enable type-checking during closure compilation
currently only for angular.js, more to come
1 parent 717888c commit fe803e5

15 files changed

+335
-253
lines changed

Rakefile

+77-3
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,84 @@ task :concat => :init do
9595
end
9696

9797

98+
desc 'Minify source files into angular.min.js'
99+
task :minify_angular => [:init] do
100+
min_path = path_to('angular.min.js')
101+
102+
angular_prefix = %x(cat src/angular.prefix)
103+
angular_suffix = %x(cat src/angular.suffix)
104+
105+
%x(java \
106+
#{java32flags()} \
107+
-jar lib/closure-compiler/compiler.jar \
108+
--compilation_level SIMPLE_OPTIMIZATIONS \
109+
--language_in ECMASCRIPT5_STRICT \
110+
--warning_level VERBOSE \
111+
--externs lib/externs/json.js \
112+
--jscomp_off nonStandardJsDocs \
113+
--jscomp_error ambiguousFunctionDecl \
114+
--jscomp_error checkRegExp \
115+
--jscomp_error checkTypes \
116+
--jscomp_error checkVars \
117+
--jscomp_error const \
118+
--jscomp_error constantProperty \
119+
--jscomp_error deprecated \
120+
--jscomp_error duplicateMessage \
121+
--jscomp_error es5Strict \
122+
--jscomp_error externsValidation \
123+
--jscomp_error globalThis \
124+
--jscomp_error internetExplorerChecks \
125+
--jscomp_error invalidCasts \
126+
--jscomp_error misplacedTypeAnnotation \
127+
--jscomp_error missingProperties \
128+
--jscomp_error suspiciousCode \
129+
--jscomp_error strictModuleDepCheck \
130+
--jscomp_error typeInvalidation \
131+
--jscomp_error undefinedNames \
132+
--jscomp_error undefinedVars \
133+
--jscomp_error unknownDefines \
134+
--jscomp_error uselessCode \
135+
--jscomp_error visibility \
136+
--output_wrapper '#{angular_prefix} %output% #{angular_suffix}' \
137+
--js #{files['angularSrc'].flatten.join(" \\\n --js ")} \
138+
--js_output_file #{min_path})
139+
140+
rewrite_file(min_path) do |content|
141+
content.gsub!('"NG_VERSION_FULL"', NG_VERSION.full).
142+
gsub!('"NG_VERSION_MAJOR"', NG_VERSION.major).
143+
gsub!('"NG_VERSION_MINOR"', NG_VERSION.minor).
144+
gsub!('"NG_VERSION_DOT"', NG_VERSION.dot).
145+
gsub!('"NG_VERSION_CODENAME"', NG_VERSION.codename).
146+
gsub!(/\s*['"]use strict['"];?\s*/, ''). # remove all file-specific strict mode flags
147+
sub!(/\(function\([^)]*\)\s*\{/, "\\0\n'use strict';") # add single strict mode flag
148+
end
149+
end
150+
151+
152+
desc 'Double-minify angular.min.js into angular.min.js'
153+
task :minify_angular2 => [:minify_angular] do
154+
# We double minify to rename free floating fns in angular closure, this will go away
155+
# when we switch to namespaces
156+
157+
input_path = path_to('angular.min.js')
158+
output_path = path_to('angular.min2.js')
159+
160+
%x(java \
161+
#{java32flags()} \
162+
-jar lib/closure-compiler/compiler.jar \
163+
--compilation_level SIMPLE_OPTIMIZATIONS \
164+
--language_in ECMASCRIPT5_STRICT \
165+
--externs lib/externs/json.js \
166+
--js #{input_path} \
167+
--js_output_file #{output_path})
168+
169+
FileUtils.cp output_path, input_path
170+
end
171+
172+
98173
desc 'Minify JavaScript'
99-
task :minify => [:init, :concat, :concat_scenario] do
100-
[ 'angular.js',
101-
'angular-cookies.js',
174+
task :minify => [:init, :concat, :concat_scenario, :minify_angular2] do
175+
[ 'angular-cookies.js',
102176
'angular-loader.js',
103177
'angular-resource.js',
104178
'angular-sanitize.js',

angularFiles.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ angularFiles = {
5959
'src/ng/directive/ngView.js',
6060
'src/ng/directive/script.js',
6161
'src/ng/directive/select.js',
62-
'src/ng/directive/style.js'
62+
'src/ng/directive/style.js',
63+
64+
'src/angular-bootstrap.js'
6365
],
6466

6567
'angularSrcModules': [
@@ -127,7 +129,8 @@ angularFiles = {
127129
'jstdExclude': [
128130
'test/jquery_alias.js',
129131
'src/angular-bootstrap.js',
130-
'src/ngScenario/angular-bootstrap.js'
132+
'src/angular-dev.js',
133+
'src/ngScenario/angular-dev.js'
131134
],
132135

133136
'jstdScenario': [
@@ -168,8 +171,9 @@ angularFiles = {
168171
],
169172

170173
'jstdPerfExclude': [
171-
'src/ng/angular-bootstrap.js',
172-
'src/ngScenario/angular-bootstrap.js'
174+
'src/angular-bootstrap.js',
175+
'src/angular-dev.js',
176+
'src/ngScenario/angular-dev.js'
173177
],
174178

175179
'jstdJquery': [
@@ -190,7 +194,8 @@ angularFiles = {
190194

191195
'jstdJqueryExclude': [
192196
'src/angular-bootstrap.js',
193-
'src/ngScenario/angular-bootstrap.js',
197+
'src/angular-dev.js',
198+
'src/ngScenario/angular-dev.js',
194199
'test/jquery_remove.js'
195200
]
196201
};

check-size.sh

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/bash
22

3-
rake minify
3+
#TODO(i): UNCOMMENT
4+
#rake minify
45
gzip -c < build/angular.min.js > build/angular.min.js.gzip
5-
ls -l build/angular.min.*
6+
gzip -c < build/angular.mmin.js > build/angular.mmin.js.gzip
7+
gzip -c < build/angular.mmin2.js > build/angular.mmin2.js.gzip
8+
ls -l build/angular.m*

example/personalLog/personalLog.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
setupModuleLoader(window);
88
</script>
99
<script src="personalLog.js"></script>
10-
<script src="../../src/angular-bootstrap.js"></script>
10+
<script src="../../src/angular-dev.js"></script>
1111
<script src="../../src/ngCookies/cookies.js"></script>
1212
</head>
1313

example/personalLog/scenario/runner.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<title>Personal Log Scenario Runner</title>
55
<meta http-equiv="expires" content="0">
6-
<script type="text/javascript" src="../../../src/scenario/angular-bootstrap.js" ng:autotest></script>
6+
<script type="text/javascript" src="../../../src/scenario/angular-dev.js" ng:autotest></script>
77
<script type="text/javascript" src="personalLogScenario.js"></script>
88
</head>
99
<body>

example/temp.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
};
1717
});
1818
</script>
19-
<script src="../src/angular-bootstrap.js"></script>
19+
<script src="../src/angular-dev.js"></script>
2020
</head>
2121
<body>
2222
<p>

example/tweeter/tweeter_addressbook.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<link rel="stylesheet" type="text/css" href="../../css/angular.css">
66
<script type="text/javascript" src="../../lib/underscore/underscore.js"></script>
77
<script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
8-
<script type="text/javascript" src="../../src/angular-bootstrap.js"></script>
8+
<script type="text/javascript" src="../../src/angular-dev.js"></script>
99
<script type="text/javascript" src="tweeterclient.js"></script>
1010
</head>
1111
<body ng:class="status" ng:init="mute={}" ng:watch="$anchor.user: tweets = fetchTweets($anchor.user)">

example/tweeter/tweeter_demo.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<link rel="stylesheet" type="text/css" href="../../css/angular.css">
66
<script type="text/javascript" src="../../lib/underscore/underscore.js"></script>
77
<script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
8-
<script type="text/javascript" src="../../src/angular-bootstrap.js"></script>
8+
<script type="text/javascript" src="../../src/angular-dev.js"></script>
99
<script type="text/javascript" src="tweeterclient.js"></script>
1010
</head>
1111
<body ng:class="status" Xng:init="tweets = fetchTweets()">

src/Angular.js

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ var /** holds major version number for IE or NaN for real browsers */
5353
msie = int((/msie (\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]),
5454
jqLite, // delay binding since jQuery could be loaded after us.
5555
jQuery, // delay binding
56+
undefined = void 0,
5657
slice = [].slice,
5758
push = [].push,
5859
toString = Object.prototype.toString,

0 commit comments

Comments
 (0)