Skip to content

Commit 8d1be9c

Browse files
build(app) sync with generator-webapp
1 parent 977c797 commit 8d1be9c

File tree

7 files changed

+523
-490
lines changed

7 files changed

+523
-490
lines changed

app/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@ var Generator = module.exports = function Generator(args, options) {
6565
this.on('end', function () {
6666
this.installDependencies({ skipInstall: this.options['skip-install'] });
6767
});
68+
69+
this.pkg = JSON.parse(this.readFileAsString(path.join(__dirname, '../package.json')));
6870
};
6971

70-
util.inherits(Generator, yeoman.generators.NamedBase);
72+
util.inherits(Generator, yeoman.generators.Base);
7173

7274
Generator.prototype.askForBootstrap = function askForBootstrap() {
7375
var cb = this.async();

templates/common/Gruntfile.js

Lines changed: 100 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1+
// Generated on <%= (new Date).toISOString().split('T')[0] %> using <%= pkg.name %> <%= pkg.version %>
12
'use strict';
23
var LIVERELOAD_PORT = 35729;
34
var lrSnippet = require('connect-livereload')({ port: LIVERELOAD_PORT });
45
var mountFolder = function (connect, dir) {
56
return connect.static(require('path').resolve(dir));
67
};
78

9+
// # Globbing
10+
// for performance reasons we're only matching one level down:
11+
// 'test/spec/{,*/}*.js'
12+
// use this if you want to recursively match all subfolders:
13+
// 'test/spec/**/*.js'
14+
815
module.exports = function (grunt) {
916
// load all grunt tasks
1017
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
@@ -35,7 +42,7 @@ module.exports = function (grunt) {
3542
},
3643
compass: {
3744
files: ['<%%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
38-
tasks: ['compass']
45+
tasks: ['compass:server']
3946
},
4047
livereload: {
4148
options: {
@@ -75,6 +82,15 @@ module.exports = function (grunt) {
7582
];
7683
}
7784
}
85+
},
86+
dist: {
87+
options: {
88+
middleware: function (connect) {
89+
return [
90+
mountFolder(connect, yeomanConfig.dist)
91+
];
92+
}
93+
}
7894
}
7995
},
8096
open: {
@@ -104,12 +120,6 @@ module.exports = function (grunt) {
104120
'<%%= yeoman.app %>/scripts/{,*/}*.js'
105121
]
106122
},
107-
karma: {
108-
unit: {
109-
configFile: 'karma.conf.js',
110-
singleRun: true
111-
}
112-
},
113123
coffee: {
114124
dist: {
115125
files: [{
@@ -134,11 +144,14 @@ module.exports = function (grunt) {
134144
options: {
135145
sassDir: '<%%= yeoman.app %>/styles',
136146
cssDir: '.tmp/styles',
147+
generatedImagesDir: '.tmp/images/generated',
137148
imagesDir: '<%%= yeoman.app %>/images',
138149
javascriptsDir: '<%%= yeoman.app %>/scripts',
139150
fontsDir: '<%%= yeoman.app %>/styles/fonts',
140151
importPath: '<%%= yeoman.app %>/bower_components',
141-
relativeAssets: true
152+
httpImagesPath: '/images',
153+
httpGeneratedImagesPath: '/images/generated',
154+
relativeAssets: false
142155
},
143156
dist: {},
144157
server: {
@@ -147,12 +160,19 @@ module.exports = function (grunt) {
147160
}
148161
}
149162
},
150-
concat: {
163+
// not used since Uglify task does concat,
164+
// but still available if needed
165+
/*concat: {
166+
dist: {}
167+
},*/
168+
rev: {
151169
dist: {
152170
files: {
153-
'<%%= yeoman.dist %>/scripts/scripts.js': [
154-
'.tmp/scripts/{,*/}*.js',
155-
'<%%= yeoman.app %>/scripts/{,*/}*.js'
171+
src: [
172+
'<%%= yeoman.dist %>/scripts/{,*/}*.js',
173+
'<%%= yeoman.dist %>/styles/{,*/}*.css',
174+
'<%%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
175+
'<%%= yeoman.dist %>/styles/fonts/*'
156176
]
157177
}
158178
}
@@ -211,6 +231,53 @@ module.exports = function (grunt) {
211231
}]
212232
}
213233
},
234+
// Put files not handled in other tasks here
235+
copy: {
236+
dist: {
237+
files: [{
238+
expand: true,
239+
dot: true,
240+
cwd: '<%%= yeoman.app %>',
241+
dest: '<%%= yeoman.dist %>',
242+
src: [
243+
'*.{ico,png,txt}',
244+
'.htaccess',
245+
'bower_components/**/*',
246+
'images/{,*/}*.{gif,webp}',
247+
'styles/fonts/*'
248+
]
249+
}, {
250+
expand: true,
251+
cwd: '.tmp/images',
252+
dest: '<%%= yeoman.dist %>/images',
253+
src: [
254+
'generated/*'
255+
]
256+
}]
257+
}
258+
},
259+
concurrent: {
260+
server: [
261+
'coffee:dist',
262+
'compass:server'
263+
],
264+
test: [
265+
'coffee',
266+
'compass'
267+
],
268+
dist: [
269+
'coffee',
270+
'compass:dist',
271+
'imagemin',
272+
'htmlmin'
273+
]
274+
},
275+
karma: {
276+
unit: {
277+
configFile: 'karma.conf.js',
278+
singleRun: true
279+
}
280+
},
214281
cdnify: {
215282
dist: {
216283
html: ['<%%= yeoman.dist %>/*.html']
@@ -235,65 +302,35 @@ module.exports = function (grunt) {
235302
}
236303
}
237304
},
238-
rev: {
239-
dist: {
240-
files: {
241-
src: [
242-
'<%%= yeoman.dist %>/scripts/{,*/}*.js',
243-
'<%%= yeoman.dist %>/styles/{,*/}*.css',
244-
'<%%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
245-
'<%%= yeoman.dist %>/styles/fonts/*'
246-
]
247-
}
248-
}
249-
},
250-
copy: {
251-
dist: {
252-
files: [{
253-
expand: true,
254-
dot: true,
255-
cwd: '<%%= yeoman.app %>',
256-
dest: '<%%= yeoman.dist %>',
257-
src: [
258-
'*.{ico,txt}',
259-
'.htaccess',
260-
'bower_components/**/*',
261-
'images/{,*/}*.{gif,webp}',
262-
'styles/fonts/*'
263-
]
264-
}]
265-
}
266-
}
267305
});
268306

269-
grunt.registerTask('server', [
270-
'clean:server',
271-
'coffee:dist',
272-
'compass:server',
273-
'connect:livereload',
274-
'open',
275-
'watch'
276-
]);
307+
grunt.registerTask('server', function (target) {
308+
if (target === 'dist') {
309+
return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
310+
}
311+
312+
grunt.task.run([
313+
'clean:server',
314+
'concurrent:server',
315+
'connect:livereload',
316+
'open',
317+
'watch'
318+
]);
319+
});
277320

278321
grunt.registerTask('test', [
279322
'clean:server',
280-
'coffee',
281-
'compass',
323+
'concurrent:test',
282324
'connect:test',
283325
'karma'
284326
]);
285327

286328
grunt.registerTask('build', [
287329
'clean:dist',
288-
'jshint',
289-
'test',
290-
'coffee',
291-
'compass:dist',
292330
'useminPrepare',
293-
'concat',
294-
'imagemin',
331+
'concurrent:dist',
295332
'cssmin',
296-
'htmlmin',
333+
'concat',
297334
'copy',
298335
'cdnify',
299336
'ngmin',
@@ -302,5 +339,9 @@ module.exports = function (grunt) {
302339
'usemin'
303340
]);
304341

305-
grunt.registerTask('default', ['build']);
342+
grunt.registerTask('default', [
343+
'jshint',
344+
'test',
345+
'build'
346+
]);
306347
};

templates/common/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<script>
4343
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
4444
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
45-
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
45+
g.src='//www.google-analytics.com/ga.js';
4646
s.parentNode.insertBefore(g,s)}(document,'script'));
4747
</script>
4848
</body>

templates/common/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
"grunt-contrib-htmlmin": "~0.1.3",
1717
"grunt-contrib-imagemin": "~0.1.4",
1818
"grunt-contrib-watch": "~0.4.0",
19-
"grunt-bower-requirejs": "~0.4.2",
2019
"grunt-usemin": "~0.1.11",
2120
"grunt-rev": "~0.1.0",
2221
"grunt-karma": "~0.4.3",
2322
"grunt-open": "~0.2.0",
23+
"grunt-concurrent": "~0.1.0",
2424
"matchdep": "~0.1.2",
25-
"connect-livereload": "~0.1.0",
25+
"connect-livereload": "~0.1.4",
2626
"grunt-google-cdn": "~0.2.0",
2727
"grunt-ngmin": "~0.0.2"
2828
},

templates/common/root/.jshintrc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"node": true,
33
"browser": true,
4-
"es5": true,
54
"esnext": true,
65
"bitwise": true,
76
"camelcase": true,

0 commit comments

Comments
 (0)