зеркало из https://github.com/mozilla/seasponge.git
447 строки
10 KiB
CoffeeScript
447 строки
10 KiB
CoffeeScript
# Generated on 2014-08-10 using generator-angular 0.9.5
|
|
"use strict"
|
|
|
|
# # Globbing
|
|
# for performance reasons we're only matching one level down:
|
|
# 'test/spec/{,*/}*.js'
|
|
# use this if you want to recursively match all subfolders:
|
|
# 'test/spec/**/*.js'
|
|
module.exports = (grunt) ->
|
|
|
|
# Load grunt tasks automatically
|
|
require("load-grunt-tasks") grunt
|
|
|
|
# Time how long tasks take. Can help when optimizing build times
|
|
require("time-grunt") grunt
|
|
|
|
# Configurable paths for the application
|
|
appConfig =
|
|
app: require("./bower.json").appPath or "app"
|
|
dist: "dist"
|
|
|
|
|
|
# Define the configuration for all the tasks
|
|
grunt.initConfig
|
|
|
|
# Project settings
|
|
yeoman: appConfig
|
|
|
|
# Watches files for changes and runs tasks based on the changed files
|
|
watch:
|
|
bower:
|
|
files: ["bower.json"]
|
|
tasks: ["wiredep"]
|
|
|
|
coffee:
|
|
files: ["<%= yeoman.app %>/scripts/**/*.{coffee,litcoffee,coffee.md}"]
|
|
tasks: ["newer:coffee:dist"]
|
|
|
|
coffeeTest:
|
|
files: ["test/spec/{,*/}*.{coffee,litcoffee,coffee.md}"]
|
|
tasks: [
|
|
"newer:coffee:test"
|
|
"karma"
|
|
]
|
|
|
|
compass:
|
|
files: ["<%= yeoman.app %>/styles/{,*/}*.{scss,sass}"]
|
|
tasks: [
|
|
"compass:server"
|
|
"autoprefixer"
|
|
]
|
|
|
|
gruntfile:
|
|
files: ["Gruntfile.js"]
|
|
|
|
livereload:
|
|
options:
|
|
livereload: "<%= connect.options.livereload %>"
|
|
|
|
files: [
|
|
"<%= yeoman.app %>/{,*/}*.html"
|
|
".tmp/styles/{,*/}*.css"
|
|
".tmp/scripts/**/*.js"
|
|
"<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}"
|
|
]
|
|
|
|
# Generate Changelog
|
|
changelog:
|
|
options:
|
|
dest: 'CHANGELOG.md'
|
|
versionFile: 'package.json'
|
|
|
|
# The actual grunt server settings
|
|
connect:
|
|
options:
|
|
port: 9000
|
|
|
|
# Change this to '0.0.0.0' to access the server from outside.
|
|
hostname: "localhost"
|
|
livereload: 35729
|
|
|
|
livereload:
|
|
options:
|
|
open: true
|
|
middleware: (connect) ->
|
|
[
|
|
connect.static(".tmp")
|
|
connect().use("/bower_components", connect.static("./bower_components"))
|
|
connect.static(appConfig.app)
|
|
]
|
|
|
|
test:
|
|
options:
|
|
port: 9001
|
|
middleware: (connect) ->
|
|
[
|
|
connect.static(".tmp")
|
|
connect.static("test")
|
|
connect().use("/bower_components", connect.static("./bower_components"))
|
|
connect.static(appConfig.app)
|
|
]
|
|
|
|
dist:
|
|
options:
|
|
open: true
|
|
base: "<%= yeoman.dist %>"
|
|
|
|
|
|
# Make sure code styles are up to par and there are no obvious mistakes
|
|
jshint:
|
|
options:
|
|
jshintrc: ".jshintrc"
|
|
reporter: require("jshint-stylish")
|
|
|
|
all:
|
|
src: ["Gruntfile.js"]
|
|
|
|
|
|
# Empties folders to start fresh
|
|
clean:
|
|
dist:
|
|
files: [
|
|
dot: true
|
|
src: [
|
|
".tmp"
|
|
"<%= yeoman.dist %>/{,*/}*"
|
|
"!<%= yeoman.dist %>/.git*"
|
|
]
|
|
]
|
|
|
|
server: ".tmp"
|
|
|
|
|
|
# Add vendor prefixed styles
|
|
autoprefixer:
|
|
options:
|
|
browsers: ["last 1 version"]
|
|
|
|
dist:
|
|
files: [
|
|
expand: true
|
|
cwd: ".tmp/styles/"
|
|
src: "{,*/}*.css"
|
|
dest: ".tmp/styles/"
|
|
]
|
|
|
|
|
|
# Automatically inject Bower components into the app
|
|
wiredep:
|
|
|
|
app:
|
|
src: ["<%= yeoman.app %>/index.html"]
|
|
ignorePath: /\.\.\//
|
|
|
|
sass:
|
|
src: ["<%= yeoman.app %>/styles/{,*/}*.{scss,sass}"]
|
|
ignorePath: /(\.\.\/){1,2}bower_components\//
|
|
|
|
|
|
# Compiles CoffeeScript to JavaScript
|
|
coffee:
|
|
options:
|
|
sourceMap: true
|
|
sourceRoot: ""
|
|
|
|
dist:
|
|
files: [
|
|
expand: true
|
|
cwd: "<%= yeoman.app %>/scripts"
|
|
src: "**/*.coffee"
|
|
dest: ".tmp/scripts"
|
|
ext: ".js"
|
|
]
|
|
|
|
test:
|
|
files: [
|
|
expand: true
|
|
cwd: "test/spec"
|
|
src: "{,*/}*.coffee"
|
|
dest: ".tmp/spec"
|
|
ext: ".js"
|
|
]
|
|
|
|
|
|
# Compiles Sass to CSS and generates necessary files if requested
|
|
compass:
|
|
options:
|
|
sassDir: "<%= yeoman.app %>/styles"
|
|
cssDir: ".tmp/styles"
|
|
generatedImagesDir: ".tmp/images/generated"
|
|
imagesDir: "<%= yeoman.app %>/images"
|
|
javascriptsDir: "<%= yeoman.app %>/scripts"
|
|
fontsDir: "<%= yeoman.app %>/styles/fonts"
|
|
importPath: "./bower_components"
|
|
httpImagesPath: "/images"
|
|
httpGeneratedImagesPath: "/images/generated"
|
|
httpFontsPath: "/styles/fonts"
|
|
relativeAssets: false
|
|
assetCacheBuster: false
|
|
raw: "Sass::Script::Number.precision = 10\n"
|
|
|
|
dist:
|
|
options:
|
|
generatedImagesDir: "<%= yeoman.dist %>/images/generated"
|
|
|
|
server:
|
|
options:
|
|
debugInfo: true
|
|
|
|
|
|
# Renames files for browser caching purposes
|
|
filerev:
|
|
dist:
|
|
src: [
|
|
"<%= yeoman.dist %>/scripts/{,*/}*.js"
|
|
"<%= yeoman.dist %>/styles/{,*/}*.css"
|
|
"<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}"
|
|
"<%= yeoman.dist %>/styles/fonts/*"
|
|
]
|
|
|
|
|
|
# Reads HTML for usemin blocks to enable smart builds that automatically
|
|
# concat, minify and revision files. Creates configurations in memory so
|
|
# additional tasks can operate on them
|
|
useminPrepare:
|
|
html: "<%= yeoman.app %>/index.html"
|
|
options:
|
|
dest: "<%= yeoman.dist %>"
|
|
flow:
|
|
html:
|
|
steps:
|
|
js: [
|
|
"concat"
|
|
"uglifyjs"
|
|
]
|
|
css: ["cssmin"]
|
|
|
|
post: {}
|
|
|
|
|
|
# Performs rewrites based on filerev and the useminPrepare configuration
|
|
usemin:
|
|
html: ["<%= yeoman.dist %>/{,*/}*.html"]
|
|
css: ["<%= yeoman.dist %>/styles/{,*/}*.css"]
|
|
options:
|
|
assetsDirs: [
|
|
"<%= yeoman.dist %>"
|
|
"<%= yeoman.dist %>/images"
|
|
]
|
|
|
|
|
|
# The following *-min tasks will produce minified files in the dist folder
|
|
# By default, your `index.html`'s <!-- Usemin block --> will take care of
|
|
# minification. These next options are pre-configured if you do not wish
|
|
# to use the Usemin blocks.
|
|
# cssmin: {
|
|
# dist: {
|
|
# files: {
|
|
# '<%= yeoman.dist %>/styles/main.css': [
|
|
# '.tmp/styles/{,*/}*.css'
|
|
# ]
|
|
# }
|
|
# }
|
|
# },
|
|
# uglify: {
|
|
# dist: {
|
|
# files: {
|
|
# '<%= yeoman.dist %>/scripts/scripts.js': [
|
|
# '<%= yeoman.dist %>/scripts/scripts.js'
|
|
# ]
|
|
# }
|
|
# }
|
|
# },
|
|
# concat: {
|
|
# dist: {}
|
|
# },
|
|
imagemin:
|
|
dist:
|
|
files: [
|
|
expand: true
|
|
cwd: "<%= yeoman.app %>/images"
|
|
src: "{,*/}*.{png,jpg,jpeg,gif}"
|
|
dest: "<%= yeoman.dist %>/images"
|
|
]
|
|
|
|
svgmin:
|
|
dist:
|
|
files: [
|
|
expand: true
|
|
cwd: "<%= yeoman.app %>/images"
|
|
src: "{,*/}*.svg"
|
|
dest: "<%= yeoman.dist %>/images"
|
|
]
|
|
|
|
htmlmin:
|
|
dist:
|
|
options:
|
|
collapseWhitespace: true
|
|
conservativeCollapse: true
|
|
collapseBooleanAttributes: true
|
|
removeCommentsFromCDATA: true
|
|
removeOptionalTags: true
|
|
|
|
files: [
|
|
expand: true
|
|
cwd: "<%= yeoman.dist %>"
|
|
src: [
|
|
"*.html"
|
|
"views/{,*/}*.html"
|
|
]
|
|
dest: "<%= yeoman.dist %>"
|
|
]
|
|
|
|
|
|
# ngmin tries to make the code safe for minification automatically by
|
|
# using the Angular long form for dependency injection. It doesn't work on
|
|
# things like resolve or inject so those have to be done manually.
|
|
ngmin:
|
|
dist:
|
|
files: [
|
|
expand: true
|
|
cwd: ".tmp/concat/scripts"
|
|
src: "*.js"
|
|
dest: ".tmp/concat/scripts"
|
|
]
|
|
|
|
|
|
# Replace Google CDN references
|
|
cdnify:
|
|
dist:
|
|
html: ["<%= yeoman.dist %>/*.html"]
|
|
|
|
|
|
# Copies remaining files to places other tasks can use
|
|
copy:
|
|
dist:
|
|
files: [
|
|
{
|
|
expand: true
|
|
dot: true
|
|
cwd: "<%= yeoman.app %>"
|
|
dest: "<%= yeoman.dist %>"
|
|
src: [
|
|
"*.{ico,png,txt}"
|
|
".htaccess"
|
|
"*.html"
|
|
"views/{,*/}*.html"
|
|
"images/{,*/}*.{webp}"
|
|
"fonts/*"
|
|
]
|
|
}
|
|
{
|
|
expand: true
|
|
cwd: ".tmp/images"
|
|
dest: "<%= yeoman.dist %>/images"
|
|
src: ["generated/*"]
|
|
}
|
|
{
|
|
expand: true
|
|
cwd: "."
|
|
src: "bower_components/bootstrap-sass-official/assets/fonts/bootstrap/*"
|
|
dest: "<%= yeoman.dist %>"
|
|
}
|
|
]
|
|
|
|
styles:
|
|
expand: true
|
|
cwd: "<%= yeoman.app %>/styles"
|
|
dest: ".tmp/styles/"
|
|
src: "{,*/}*.css"
|
|
|
|
|
|
# Run some tasks in parallel to speed up the build process
|
|
concurrent:
|
|
server: [
|
|
"coffee:dist"
|
|
"compass:server"
|
|
]
|
|
test: [
|
|
"coffee"
|
|
"compass"
|
|
]
|
|
dist: [
|
|
"coffee"
|
|
"compass:dist"
|
|
"imagemin"
|
|
"svgmin"
|
|
]
|
|
|
|
|
|
# Test settings
|
|
karma:
|
|
unit:
|
|
configFile: "test/karma.conf.coffee"
|
|
singleRun: true
|
|
|
|
grunt.registerTask "serve", "Compile then start a connect web server", (target) ->
|
|
if target is "dist"
|
|
return grunt.task.run([
|
|
"build"
|
|
"connect:dist:keepalive"
|
|
])
|
|
grunt.task.run [
|
|
"clean:server"
|
|
"wiredep"
|
|
"concurrent:server"
|
|
"autoprefixer"
|
|
"connect:livereload"
|
|
"watch"
|
|
]
|
|
return
|
|
|
|
grunt.registerTask "server", "DEPRECATED TASK. Use the \"serve\" task instead", (target) ->
|
|
grunt.log.warn "The `server` task has been deprecated. Use `grunt serve` to start a server."
|
|
grunt.task.run ["serve:" + target]
|
|
return
|
|
|
|
grunt.registerTask "test", [
|
|
"clean:server"
|
|
"concurrent:test"
|
|
"autoprefixer"
|
|
"connect:test"
|
|
"karma"
|
|
]
|
|
grunt.registerTask "build", [
|
|
"clean:dist"
|
|
"wiredep"
|
|
"useminPrepare"
|
|
"concurrent:dist"
|
|
"autoprefixer"
|
|
"concat"
|
|
"ngmin"
|
|
"copy:dist"
|
|
"cdnify"
|
|
"cssmin"
|
|
"uglify"
|
|
"filerev"
|
|
"usemin"
|
|
"htmlmin"
|
|
]
|
|
grunt.registerTask "default", [
|
|
"newer:jshint"
|
|
"test"
|
|
"build"
|
|
]
|
|
return
|