Created
January 15, 2013 10:12
-
-
Save bathtimefish/4537698 to your computer and use it in GitHub Desktop.
Yeomanでクラスごとに分割したCoffeeScriptファイルを結合してからコンパイルするよう設定したGruntfile.js watchブロックで.coffeeをconcatしてall.coffeeを生成、all.coffeeをall.jsにコンパイルする。このサンプルではJubiolのソースコードをコンパイルできるよう設定してある。 https://github.com/giginet/Jubiol
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = function( grunt ) { | |
'use strict'; | |
// | |
// Grunt configuration: | |
// | |
// https://github.com/cowboy/grunt/blob/master/docs/getting_started.md | |
// | |
grunt.initConfig({ | |
// Project configuration | |
// --------------------- | |
// specify an alternate install location for Bower | |
bower: { | |
dir: 'app/components' | |
}, | |
/* coffeeファイルの結合 | |
* scripts下のすべてのcoffeeをひとつのjsに結合する | |
* 下部で定義されている concat をコメントアウトしてある | |
* jubiolのcoffeeには結合順があるので順番にソースを定義する | |
*/ | |
concat: { | |
dist: { | |
src: [ | |
'app/scripts/lib/vector.coffee', | |
'app/scripts/lib/array.coffee', | |
'app/scripts/lib/timer.coffee', | |
'app/scripts/lib/jukebox.coffee', | |
'app/scripts/main.coffee', | |
'app/scripts/sprite.coffee', | |
'app/scripts/player.coffee', | |
'app/scripts/bullet.coffee', | |
'app/scripts/state.coffee', | |
'app/scripts/level.coffee', | |
'app/scripts/stage.coffee', | |
'app/scripts/scene.coffee' | |
], | |
dest: 'app/scripts/all.coffee' | |
} | |
}, | |
// Coffee to JS compilation | |
coffee: { | |
compile: { | |
files: { | |
//'temp/scripts/*.js': 'app/scripts/**/*.coffee' | |
/* | |
* JSにコンパイルするのはall.coffeeのみとする | |
*/ | |
'temp/scripts/all.js': 'app/scripts/**/all.coffee' | |
}, | |
options: { | |
basePath: 'app/scripts' | |
} | |
} | |
}, | |
// compile .scss/.sass to .css using Compass | |
compass: { | |
dist: { | |
// http://compass-style.org/help/tutorials/configuration-reference/#configuration-properties | |
options: { | |
css_dir: 'temp/styles', | |
sass_dir: 'app/styles', | |
images_dir: 'app/images', | |
javascripts_dir: 'temp/scripts', | |
force: true | |
} | |
} | |
}, | |
// generate application cache manifest | |
manifest:{ | |
dest: '' | |
}, | |
// headless testing through PhantomJS | |
mocha: { | |
all: ['test/**/*.html'] | |
}, | |
// default watch configuration | |
watch: { | |
/* watchブロックにconcatを追加 | |
* coffeeの更新を検知してconcatを実行する | |
* その後coffeeが走るのでreloadは不要 | |
*/ | |
concat: { | |
files: 'app/scripts/**/*.coffee', | |
tasks: 'concat' | |
}, | |
coffee: { | |
files: 'app/scripts/**/*.coffee', | |
tasks: 'coffee reload' | |
}, | |
compass: { | |
files: [ | |
'app/styles/**/*.{scss,sass}' | |
], | |
tasks: 'compass reload' | |
}, | |
reload: { | |
files: [ | |
'app/*.html', | |
'app/styles/**/*.css', | |
'app/scripts/**/*.js', | |
'app/images/**/*' | |
], | |
tasks: 'reload' | |
} | |
}, | |
// default lint configuration, change this to match your setup: | |
// https://github.com/cowboy/grunt/blob/master/docs/task_lint.md#lint-built-in-task | |
lint: { | |
files: [ | |
'Gruntfile.js', | |
'app/scripts/**/*.js', | |
'spec/**/*.js' | |
] | |
}, | |
// specifying JSHint options and globals | |
// https://github.com/cowboy/grunt/blob/master/docs/task_lint.md#specifying-jshint-options-and-globals | |
jshint: { | |
options: { | |
curly: true, | |
eqeqeq: true, | |
immed: true, | |
latedef: true, | |
newcap: true, | |
noarg: true, | |
sub: true, | |
undef: true, | |
boss: true, | |
eqnull: true, | |
browser: true | |
}, | |
globals: { | |
jQuery: true | |
} | |
}, | |
// Build configuration | |
// ------------------- | |
// the staging directory used during the process | |
staging: 'temp', | |
// final build output | |
output: 'dist', | |
mkdirs: { | |
staging: 'app/' | |
}, | |
// Below, all paths are relative to the staging directory, which is a copy | |
// of the app/ directory. Any .gitignore, .ignore and .buildignore file | |
// that might appear in the app/ tree are used to ignore these values | |
// during the copy process. | |
// concat css/**/*.css files, inline @import, output a single minified css | |
css: { | |
'styles/main.css': ['styles/**/*.css'] | |
}, | |
// renames JS/CSS to prepend a hash of their contents for easier | |
// versioning | |
rev: { | |
js: 'scripts/**/*.js', | |
css: 'styles/**/*.css', | |
img: 'images/**' | |
}, | |
// usemin handler should point to the file containing | |
// the usemin blocks to be parsed | |
'usemin-handler': { | |
html: 'index.html' | |
}, | |
// update references in HTML/CSS to revved files | |
usemin: { | |
html: ['**/*.html'], | |
css: ['**/*.css'] | |
}, | |
// HTML minification | |
html: { | |
files: ['**/*.html'] | |
}, | |
// Optimizes JPGs and PNGs (with jpegtran & optipng) | |
img: { | |
dist: '<config:rev.img>' | |
}, | |
// rjs configuration. You don't necessarily need to specify the typical | |
// `path` configuration, the rjs task will parse these values from your | |
// main module, using http://requirejs.org/docs/optimization.html#mainConfigFile | |
// | |
// name / out / mainConfig file should be used. You can let it blank if | |
// you're using usemin-handler to parse rjs config from markup (default | |
// setup) | |
rjs: { | |
// no minification, is done by the min task | |
optimize: 'none', | |
baseUrl: './scripts', | |
wrap: true, | |
name: 'main' | |
}, | |
// While Yeoman handles concat/min when using | |
// usemin blocks, you can still use them manually | |
/* | |
concat: { | |
dist: '' | |
}, | |
*/ | |
min: { | |
dist: '' | |
} | |
}); | |
// Alias the `test` task to run the `mocha` task instead | |
grunt.registerTask('test', 'server:phantom mocha'); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment