css - font - span html
Grunt generaciĆ³n de php y css (1)
Estoy usando yeoman, he instalado grunt-php y puedo cargar el archivo php PERO no se accede al archivo css. Parece que el scss no se cumple o la ruta en mi index.php no apunta al archivo tmp css.
He intentado diferentes problemas (cambiando rutas) pero no puedo solucionarlo.
Aquí está mi encabezado index.php:
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>wine trip yo</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<!-- build:css(.tmp) styles/main.css -->
<link rel="stylesheet" href="styles/main.css">
<!-- endbuild -->
<!-- build:js scripts/vendor/modernizr.js -->
<script src="bower_components/modernizr/modernizr.js"></script>
<!-- endbuild -->
</head>
Y aquí está mi Gruntfile:
// Generated on 2013-10-14 using generator-webapp 0.4.3
''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 = function (grunt) {
// show elapsed time at the end
require(''time-grunt'')(grunt);
// load all grunt tasks
require(''load-grunt-tasks'')(grunt);
grunt.loadNpmTasks(''grunt-php'');
grunt.initConfig({
// configurable paths
yeoman: {
app: ''app'',
dist: ''dist''
},
watch: {
compass: {
files: [''<%= yeoman.app %>/styles/{,*/}*.{scss,sass}''],
tasks: [''compass:server'', ''autoprefixer'']
},
styles: {
files: [''<%= yeoman.app %>/styles/{,*/}*.css''],
tasks: [''copy:styles'', ''autoprefixer'']
},
livereload: {
options: {
livereload: ''<%= connect.options.livereload %>''
},
files: [
''<%= yeoman.app %>/*.php'',
''.tmp/styles/{,*/}*.css'',
''{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js'',
''<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}''
]
}
},
connect: {
options: {
port: 9000,
livereload: 35729,
// change this to ''0.0.0.0'' to access the server from outside
hostname: ''localhost''
},
livereload: {
options: {
open: true,
base: [
''.tmp'',
''<%= yeoman.app %>''
]
}
},
test: {
options: {
base: [
''.tmp'',
''test'',
''<%= yeoman.app %>''
]
}
},
dist: {
options: {
open: true,
base: ''<%= yeoman.dist %>''
}
}
},
clean: {
dist: {
files: [{
dot: true,
src: [
''.tmp'',
''<%= yeoman.dist %>/*'',
''!<%= yeoman.dist %>/.git*''
]
}]
},
server: ''.tmp''
},
jshint: {
options: {
jshintrc: ''.jshintrc''
},
all: [
''Gruntfile.js'',
''<%= yeoman.app %>/scripts/{,*/}*.js'',
''!<%= yeoman.app %>/scripts/vendor/*'',
''test/spec/{,*/}*.js''
]
},
mocha: {
all: {
options: {
run: true,
urls: [''http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.php'']
}
}
},
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: ''<%= yeoman.app %>/bower_components'',
httpImagesPath: ''/images'',
httpGeneratedImagesPath: ''/images/generated'',
httpFontsPath: ''/styles/fonts'',
relativeAssets: false,
assetCacheBuster: false
},
dist: {
options: {
generatedImagesDir: ''<%= yeoman.dist %>/images/generated''
}
},
server: {
options: {
debugInfo: true
}
}
},
autoprefixer: {
options: {
browsers: [''last 1 version'']
},
dist: {
files: [{
expand: true,
cwd: ''.tmp/styles/'',
src: ''{,*/}*.css'',
dest: ''.tmp/styles/''
}]
}
},
// not used since Uglify task does concat,
// but still available if needed
/*concat: {
dist: {}
},*/
requirejs: {
dist: {
// Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
options: {
// `name` and `out` is set by grunt-usemin
baseUrl: ''<%= yeoman.app %>/scripts'',
optimize: ''none'',
// TODO: Figure out how to make sourcemaps work with grunt-usemin
// https://github.com/yeoman/grunt-usemin/issues/30
//generateSourceMaps: true,
// required to support SourceMaps
// http://requirejs.org/docs/errors.html#sourcemapcomments
preserveLicenseComments: false,
useStrict: true,
wrap: true
//uglify2: {} // https://github.com/mishoo/UglifyJS2
}
}
},
rev: {
dist: {
files: {
src: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}'',
''<%= yeoman.dist %>/styles/fonts/{,*/}*.*''
]
}
}
},
useminPrepare: {
options: {
dest: ''<%= yeoman.dist %>''
},
html: ''<%= yeoman.app %>/index.php''
},
usemin: {
options: {
dirs: [''<%= yeoman.dist %>'']
},
html: [''<%= yeoman.dist %>/{,*/}*.php''],
css: [''<%= yeoman.dist %>/styles/{,*/}*.css'']
},
imagemin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.{png,jpg,jpeg}'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
svgmin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.svg'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
cssmin: {
// This task is pre-configured if you do not wish to use Usemin
// blocks for your CSS. By default, the Usemin block from your
// `index.php` will take care of minification, e.g.
//
// <!-- build:css({.tmp,app}) styles/main.css -->
//
// dist: {
// files: {
// ''<%= yeoman.dist %>/styles/main.css'': [
// ''.tmp/styles/{,*/}*.css'',
// ''<%= yeoman.app %>/styles/{,*/}*.css''
// ]
// }
// }
},
htmlmin: {
dist: {
options: {
/*removeCommentsFromCDATA: true,
// https://github.com/yeoman/grunt-usemin/issues/44
//collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeOptionalTags: true*/
},
files: [{
expand: true,
cwd: ''<%= yeoman.app %>'',
src: ''*.php'',
dest: ''<%= yeoman.dist %>''
}]
}
},
// Put files not handled in other tasks here
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>'',
dest: ''<%= yeoman.dist %>'',
src: [
''*.{ico,png,txt}'',
''.htaccess'',
''images/{,*/}*.{webp,gif}'',
''styles/fonts/{,*/}*.*'',
''bower_components/sass-bootstrap/fonts/*.*''
]
}]
},
styles: {
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>/styles'',
dest: ''.tmp/styles/'',
src: ''{,*/}*.css''
}
},
modernizr: {
devFile: ''<%= yeoman.app %>/bower_components/modernizr/modernizr.js'',
outputFile: ''<%= yeoman.dist %>/bower_components/modernizr/modernizr.js'',
files: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''!<%= yeoman.dist %>/scripts/vendor/*''
],
uglify: true
},
concurrent: {
server: [
''compass'',
''copy:styles''
],
test: [
''copy:styles''
],
dist: [
''compass'',
''copy:styles'',
''imagemin'',
''svgmin'',
''htmlmin''
]
},
bower: {
options: {
exclude: [''modernizr'']
},
all: {
rjsConfig: ''<%= yeoman.app %>/scripts/main.js''
}
},
php: {
watch: {},
options: {
keepalive: true,
open: true,
base: ''app''
}
}
});
grunt.registerTask(''server'', function (target) {
if (target === ''dist'') {
return grunt.task.run([''build'', ''connect:dist:keepalive'']);
}
grunt.task.run([
''clean:server'',
''concurrent:server'',
''autoprefixer'',
''connect:livereload'',
''watch''
]);
});
grunt.registerTask(''test'', [
''clean:server'',
''concurrent:test'',
''autoprefixer'',
''connect:test'',
''mocha''
]);
grunt.registerTask(''build'', [
''clean:dist'',
''useminPrepare'',
''concurrent:dist'',
''autoprefixer'',
''requirejs'',
''concat'',
''cssmin'',
''uglify'',
''modernizr'',
''copy:dist'',
''rev'',
''usemin''
]);
grunt.registerTask(''default'', [
''jshint'',
''test'',
''build''
]);
//grunt.registerTask(''test'', [''php'', ''mocha'']);
grunt.registerTask(''phpwatch'', [
''clean:server'',
''concurrent:server'',
''autoprefixer'',
''connect:livereload'',
''php:watch'',
''watch''
]);
};
Estoy lanzando servidor con el siguiente comando:
grunt phpwatch
El resultado devuelve que todos los archivos se encuentran, excepto:
127.0.0.1:37659 [404]: /styles/main.css - No such file or directory
Cualquier consejo sobre cómo personalizar mi gruntfile para hacer accesible el archivo css sería muy bueno. Gracias.
ÚLTIMA VERSIÓN (12/02/2013):
PD: actualmente tengo un error en la generación de la variable nombre / salida en requireJS, así que lo he codificado pero la generación del archivo scss funciona:
// Generated on 2013-10-14 using generator-webapp 0.4.3
''use strict'';
module.exports = function (grunt) {
// show elapsed time at the end
require(''time-grunt'')(grunt);
// load all grunt tasks
require(''load-grunt-tasks'')(grunt);
grunt.loadNpmTasks(''grunt-php'');
grunt.loadNpmTasks(''grunt-bower-requirejs'');
//grunt.loadNpmTasks(''grunt-ftpush'');
grunt.initConfig({
// configurable paths
yeoman: {
app: ''app'',
dist: ''dist''
},
watch: {
compass: {
files: [''<%= yeoman.app %>/styles/{,*/}*.{scss,sass}''],
tasks: [''compass:server'', ''autoprefixer'']
},
styles: {
files: [''<%= yeoman.app %>/styles/{,*/}*.css''],
tasks: [''copy:styles'', ''autoprefixer'']
},
livereload: {
options: {
livereload: ''<%= connect.options.livereload %>''
},
files: [
''<%= yeoman.app %>/*.php'',
''.tmp/styles/{,*/}*.css'',
''{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js'',
''<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}''
]
}
},
connect: {
options: {
port: 9000,
livereload: 35729,
// change this to ''0.0.0.0'' to access the server from outside
//hostname: ''localhost''
hostname: ''wine-trip.net''
},
livereload: {
options: {
open: true,
base: [
''.tmp'',
''<%= yeoman.app %>''
]
}
},
test: {
options: {
base: [
''.tmp'',
''test'',
''<%= yeoman.app %>''
]
}
},
dist: {
options: {
open: true,
base: ''<%= yeoman.dist %>''
}
}
},
clean: {
dist: {
files: [{
dot: true,
src: [
''.tmp'',
''<%= yeoman.dist %>/*'',
''!<%= yeoman.dist %>/.git*''
]
}]
},
server: ''.tmp''
},
jshint: {
options: {
jshintrc: ''.jshintrc'',
indent: 5
},
all: [
''Gruntfile.js'',
''<%= yeoman.app %>/scripts/{,*/}*.js'',
''!<%= yeoman.app %>/scripts/vendor/*'',
''test/spec/{,*/}*.js''
]
},
mocha: {
all: {
options: {
run: true,
urls: [''http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.php'']
}
}
},
compass: {
options: {
sassDir: ''<%= yeoman.app %>/styles'',
cssDir: ''.tmp/styles'',
//cssDir: ''<%= yeoman.app %>/styles'',
generatedImagesDir: ''.tmp/images/generated'',
imagesDir: ''<%= yeoman.app %>/images'',
javascriptsDir: ''<%= yeoman.app %>/scripts'',
fontsDir: ''<%= yeoman.app %>/styles/fonts'',
importPath: ''<%= yeoman.app %>/bower_components'',
httpImagesPath: ''/images'',
httpGeneratedImagesPath: ''/images/generated'',
httpFontsPath: ''/styles/fonts'',
relativeAssets: false,
assetCacheBuster: false
},
dist: {
options: {
generatedImagesDir: ''<%= yeoman.dist %>/images/generated''
}
},
server: {
options: {
debugInfo: true
}
}
},
autoprefixer: {
options: {
browsers: [''last 1 version'']
},
dist: {
files: [{
expand: true,
cwd: ''.tmp/styles/'',
src: ''{,*/}*.css'',
dest: ''.tmp/styles/''
}]
}
},
// not used since Uglify task does concat,
// but still available if needed
/*concat: {
dist: {}
},*/
requirejs: {
dist: {
// Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
options: {
// `name` and `out` is set by grunt-usemin
name:''app'',
out:''dist'',
//
baseUrl: ''<%= yeoman.app %>/scripts'',
optimize: ''none'',
// TODO: Figure out how to make sourcemaps work with grunt-usemin
// https://github.com/yeoman/grunt-usemin/issues/30
//generateSourceMaps: true,
// required to support SourceMaps
// http://requirejs.org/docs/errors.html#sourcemapcomments
preserveLicenseComments: false,
useStrict: false,//true
wrap: true
//uglify2: {} // https://github.com/mishoo/UglifyJS2
/*paths: {
myComponent: ''perso/wt.js''
}*/
}
}
},
rev: {
dist: {
files: {
src: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}'',
''<%= yeoman.dist %>/styles/fonts/{,*/}*.*''
]
}
}
},
useminPrepare: {
options: {
dest: ''<%= yeoman.dist %>''
},
html: ''<%= yeoman.app %>/index.php''
},
usemin: {
options: {
dirs: [''<%= yeoman.dist %>'']
},
html: [''<%= yeoman.dist %>/{,*/}*.php''],
css: [''<%= yeoman.dist %>/styles/{,*/}*.css'']
},
imagemin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.{png,jpg,jpeg}'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
svgmin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.svg'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
cssmin: {
// This task is pre-configured if you do not wish to use Usemin
// blocks for your CSS. By default, the Usemin block from your
// `index.php` will take care of minification, e.g.
//
// <!-- build:css({.tmp,app}) styles/main.css -->
//
// dist: {
// files: {
// ''<%= yeoman.dist %>/styles/main.css'': [
// ''.tmp/styles/{,*/}*.css'',
// ''<%= yeoman.app %>/styles/{,*/}*.css''
// ]
// }
// }
},
htmlmin: {
dist: {
options: {
/*removeCommentsFromCDATA: true,
// https://github.com/yeoman/grunt-usemin/issues/44
//collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeOptionalTags: true*/
},
files: [{
expand: true,
cwd: ''<%= yeoman.app %>'',
src: ''*.php'',
dest: ''<%= yeoman.dist %>''
}]
}
},
// Put files not handled in other tasks here
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>'',
dest: ''<%= yeoman.dist %>'',
src: [
''*.{ico,png,txt}'',
''.htaccess'',
''images/{,*/}*.{webp,gif}'',
''styles/fonts/{,*/}*.*'',
''bower_components/sass-bootstrap/fonts/*.*''
]
}]
},
styles: {
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>/styles'',
dest: ''.tmp/styles/'',
src: ''{,*/}*.css''
}
},
modernizr: {
devFile: ''<%= yeoman.app %>/bower_components/modernizr/modernizr.js'',
outputFile: ''<%= yeoman.dist %>/bower_components/modernizr/modernizr.js'',
files: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''!<%= yeoman.dist %>/scripts/vendor/*''
],
uglify: true
},
concurrent: {
server: [
''compass'',
''copy:styles''
],
test: [
''copy:styles''
],
dist: [
''compass'',
''copy:styles'',
''imagemin'',
''svgmin'',
''htmlmin''
]
},
bower: {
options: {
exclude: [''modernizr'']
},
all: {
rjsConfig: ''<%= yeoman.app %>/scripts/main.js''
}
},
php: {
watch: {},
options: {
//port: 9000,
//hostname: ''wine-trip.net'',
keepalive: true,
open: true,
base: ''app''
}
}/*,
ftpush: {
build: {
auth: {
host: ''ftp.wine-trip.net'',
port: 21,
authKey: ''key1''
},
src: ''/var/www/wine-trip.yo'',// ''path/to/source/folder'',
dest: ''/www-new/'',// ''/path/to/destination/folder'',
exclusions: [''path/to/source/folder .DS_Store'', ''path/to/source/folder Thumbs.db'', ''dist/tmp''],
keep: [''/important/images/at/server/*.jpg'']
}
}*/
});
grunt.registerTask(''server'', function (target) {
if (target === ''dist'') {
return grunt.task.run([''build'', ''connect:dist:keepalive'']);
}
grunt.task.run([
''clean:server'',
''concurrent:server'',
''autoprefixer'',
''connect:livereload'',
''watch''
]);
});
grunt.registerTask(''test'', [
''clean:server'',
''concurrent:test'',
''autoprefixer'',
''connect:test'',
''mocha''
]);
grunt.registerTask(''build'', [
''clean:dist'',
''useminPrepare'',
''concurrent:dist'',
''autoprefixer'',
''requirejs'',
''concat'',
''cssmin'',
''uglify'',
''modernizr'',
''copy:dist'',
''rev'',
''usemin''
]);
grunt.registerTask(''default'', [
''jshint'',
''test'',
''build''
]);
grunt.registerTask(''phpwatch'', [
//''connect:dist:keepalive'',
''useminPrepare'',
''requirejs'',
''bower'',
''compass'',
''php:watch'',
''watch:livereload'',
''watch''//,
//''connect:dist:keepalive''
]);
//grunt.registerTask(''phpwatch'', [''php:watch'', ''watch'']);
/*grunt.registerTask(''phpwatch'', function (target) {
if (target === ''dist'') {
return grunt.task.run([''build'', ''connect:dist:keepalive'']);
}
grunt.task.run([
''clean:server'',
''concurrent:server'',
''autoprefixer'',
''connect:livereload'',
''watch''
]);
});*/
};
prueba esto gruntfile.js
instalar dependencias con npm install.
necesita abrir localhost: 9000 usted mismo, o simplemente instalar la tarea gruñir-abrir y configurarlo.
// Generated on 2013-10-23 using generator-webapp 0.4.3
''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''
var mountFolder = function (connect, dir) {
return connect.static(require(''path'').resolve(dir));
};
var gateway = require(''gateway'');
var phpGateway = function (dir){
return gateway(require(''path'').resolve(dir), {
''.php'': ''php-cgi''
});
};
module.exports = function (grunt) {
// show elapsed time at the end
require(''time-grunt'')(grunt);
// load all grunt tasks
require(''load-grunt-tasks'')(grunt);
grunt.initConfig({
// configurable paths
yeoman: {
app: ''app'',
dist: ''dist''
},
watch: {
options: {
livereload: true
},
coffee: {
files: [''<%= yeoman.app %>/scripts/{,*/}*.coffee''],
tasks: [''coffee:dist'']
},
coffeeTest: {
files: [''test/spec/{,*/}*.coffee''],
tasks: [''coffee:test'']
},
compass: {
files: [''<%= yeoman.app %>/styles/{,*/}*.{scss,sass}''],
tasks: [''compass:server'', ''autoprefixer'']
},
styles: {
files: [''<%= yeoman.app %>/styles/{,*/}*.css''],
tasks: [''copy:styles'', ''autoprefixer'']
},
livereload: {
options: {
livereload: ''<%= connect.options.livereload %>''
},
files: [
''<%= yeoman.app %>/*.html'',
''<%= yeoman.app %>/*.php'',
''.tmp/styles/{,*/}*.css'',
''{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js'',
''<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}''
]
}
},
connect: {
options: {
port: 9000,
// livereload: 35729,
// change this to ''0.0.0.0'' to access the server from outside
hostname: ''0.0.0.0''
},
livereload: {
options: {
// open: true,
// base: [
// ''.tmp'',
// ''<%= yeoman.app %>''
// ]
middleware: function (connect) {
return [
require(''connect-livereload'')(),
phpGateway(''app''),
mountFolder(connect, ''.tmp''),
mountFolder(connect, ''app'')
];
}
}
},
test: {
options: {
/*base: [
''.tmp'',
''test'',
''<%= yeoman.app %>''
]*/
middleware: function (connect) {
return [
mountFolder(connect, ''.tmp''),
mountFolder(connect, ''test''),
mountFolder(connect, ''<%= yeoman.app %>'')
];
}
}
},
dist: {
options: {
/*open: true,
base: ''<%= yeoman.dist %>''*/
middleware: function (connect) {
return [
mountFolder(connect, ''<%= yeoman.dist %>'')
];
}
}
}
},
clean: {
dist: {
files: [{
dot: true,
src: [
''.tmp'',
''<%= yeoman.dist %>/*'',
''!<%= yeoman.dist %>/.git*''
]
}]
},
server: ''.tmp''
},
jshint: {
options: {
jshintrc: ''.jshintrc''
},
all: [
''Gruntfile.js'',
''<%= yeoman.app %>/scripts/{,*/}*.js'',
''!<%= yeoman.app %>/scripts/vendor/*'',
''test/spec/{,*/}*.js''
]
},
mocha: {
all: {
options: {
run: false,
urls: [''http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.php'']
}
}
},
coffee: {
options: {
bare: true
},
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''
}]
}
},
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: ''<%= yeoman.app %>/bower_components'',
httpImagesPath: ''/images'',
httpGeneratedImagesPath: ''/images/generated'',
httpFontsPath: ''/styles/fonts'',
relativeAssets: false,
assetCacheBuster: false
},
dist: {
options: {
generatedImagesDir: ''<%= yeoman.dist %>/images/generated''
}
},
server: {
options: {
debugInfo: true
}
}
},
autoprefixer: {
options: {
browsers: [''last 1 version'']
},
dist: {
files: [{
expand: true,
cwd: ''.tmp/styles/'',
src: ''{,*/}*.css'',
dest: ''.tmp/styles/''
}]
}
},
// not used since Uglify task does concat,
// but still available if needed
/*concat: {
dist: {}
},*/
requirejs: {
dist: {
// Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
options: {
// `name` and `out` is set by grunt-usemin
// dir: ''<%= yeoman.dist %>/scripts'',
baseUrl: ''<%= yeoman.app %>/scripts'',
optimize: ''none'', // uglify, uglify2, closure, closure.keepLines, none
// TODO: Figure out how to make sourcemaps work with grunt-usemin
// https://github.com/yeoman/grunt-usemin/issues/30
//generateSourceMaps: true,
// required to support SourceMaps
// http://requirejs.org/docs/errors.html#sourcemapcomments
preserveLicenseComments: false,
useStrict: true,
wrap: true
//uglify2: {} // https://github.com/mishoo/UglifyJS2
}
}
},
rev: {
dist: {
files: {
src: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}'',
''<%= yeoman.dist %>/styles/fonts/{,*/}*.*''
]
}
}
},
useminPrepare: {
options: {
dest: ''<%= yeoman.dist %>''
},
html: ''<%= yeoman.app %>/index.php''
},
usemin: {
options: {
dirs: [''<%= yeoman.dist %>'']
},
html: [''<%= yeoman.dist %>/{,*/}*.php''],
css: [''<%= yeoman.dist %>/styles/{,*/}*.css'']
},
imagemin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.{png,jpg,jpeg}'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
svgmin: {
dist: {
files: [{
expand: true,
cwd: ''<%= yeoman.app %>/images'',
src: ''{,*/}*.svg'',
dest: ''<%= yeoman.dist %>/images''
}]
}
},
cssmin: {
// This task is pre-configured if you do not wish to use Usemin
// blocks for your CSS. By default, the Usemin block from your
// `index.html` will take care of minification, e.g.
//
// <!-- build:css({.tmp,app}) styles/main.css -->
//
// dist: {
// files: {
// ''<%= yeoman.dist %>/styles/main.css'': [
// ''.tmp/styles/{,*/}*.css'',
// ''<%= yeoman.app %>/styles/{,*/}*.css''
// ]
// }
// }
},
htmlmin: {
dist: {
options: {
/*removeCommentsFromCDATA: true,
// https://github.com/yeoman/grunt-usemin/issues/44
//collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeOptionalTags: true*/
},
files: [{
expand: true,
cwd: ''<%= yeoman.app %>'',
src: ''*.php'',
dest: ''<%= yeoman.dist %>''
}]
}
},
// Put files not handled in other tasks here
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>'',
dest: ''<%= yeoman.dist %>'',
src: [
''*.{ico,png,txt}'',
''.htaccess'',
''images/{,*/}*.{webp,gif}'',
''styles/fonts/{,*/}*.*'',
''bower_components/normalize-css/normalize.css''
]
}]
},
styles: {
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>/styles'',
dest: ''.tmp/styles/'',
src: ''{,*/}*.css''
}
},
modernizr: {
devFile: ''<%= yeoman.app %>/bower_components/modernizr/modernizr.js'',
outputFile: ''<%= yeoman.dist %>/bower_components/modernizr/modernizr.js'',
files: [
''<%= yeoman.dist %>/scripts/{,*/}*.js'',
''<%= yeoman.dist %>/styles/{,*/}*.css'',
''!<%= yeoman.dist %>/scripts/vendor/*''
],
uglify: true
},
concurrent: {
server: [
''compass'',
''coffee:dist'',
''copy:styles''
],
test: [
''coffee'',
''copy:styles''
],
dist: [
''coffee'',
''compass'',
''copy:styles'',
''imagemin'',
''svgmin'',
''htmlmin''
]
},
bower: {
options: {
exclude: [''modernizr'']
},
all: {
rjsConfig: ''<%= yeoman.app %>/scripts/main.js''
}
}
});
grunt.registerTask(''server'', function (target) {
if (target === ''dist'') {
return grunt.task.run([''build'', ''connect:dist:keepalive'']);
}
grunt.task.run([
''clean:server'',
''concurrent:server'',
''autoprefixer'',
''connect:livereload'',
''watch''
]);
});
grunt.registerTask(''test'', [
''clean:server'',
''concurrent:test'',
''autoprefixer'',
''connect:test'',
''mocha''
]);
grunt.registerTask(''build'', [
''clean:dist'',
''useminPrepare'',
''concurrent:dist'',
''autoprefixer'',
''requirejs'',
''concat'',
''cssmin'',
''uglify'',
''modernizr'',
''copy:dist'',
''rev'',
''usemin''
]);
grunt.registerTask(''default'', [
''jshint'',
''test'',
''build''
]);
};
y
{
"name": "sitename.com",
"version": "0.0.0",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-coffee": "~0.7.0",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-compass": "~0.5.0",
"grunt-contrib-jshint": "~0.6.3",
"grunt-contrib-cssmin": "~0.6.1",
"grunt-contrib-connect": "~0.5.0",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-htmlmin": "~0.1.3",
"grunt-bower-requirejs": "~0.7.0",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-imagemin": "~0.2.0",
"grunt-contrib-watch": "~0.5.2",
"grunt-rev": "~0.1.0",
"grunt-autoprefixer": "~0.2.0",
"grunt-usemin": "~0.1.10",
"grunt-mocha": "~0.4.0",
"grunt-modernizr": "~0.3.0",
"grunt-svgmin": "~0.2.0",
"grunt-concurrent": "~0.3.0",
"load-grunt-tasks": "~0.1.0",
"time-grunt": "~0.1.1",
"gateway": "~0.1.1",
"connect-livereload": "~0.3.0"
},
"engines": {
"node": ">=0.8.0"
}
}