Gruntjs 在监视任务期间,Grunt concat不工作
如果我运行“grunt concat”,它会按照grunt文件编译我的JS文件(第82行)。然而,当我在做“咕噜手表”(第107行)时,它不会连接起来 从我所看到的,我的文件是好的,但我对grunt相当陌生,所以我很想看看你们是否能看到一个问题 这是我完整的Grunt文件Gruntjs 在监视任务期间,Grunt concat不工作,gruntjs,Gruntjs,如果我运行“grunt concat”,它会按照grunt文件编译我的JS文件(第82行)。然而,当我在做“咕噜手表”(第107行)时,它不会连接起来 从我所看到的,我的文件是好的,但我对grunt相当陌生,所以我很想看看你们是否能看到一个问题 这是我完整的Grunt文件 // All scripts to be included in project go here var _SCRIPTS = [ 'js/prefixfree.js', 'js/jqu
// All scripts to be included in project go here
var _SCRIPTS = [
'js/prefixfree.js',
'js/jquery-1-10-2.js',
'js/ie-detect.js',
'js/application.js'
];
var _PORT = 7777;
module.exports = function(grunt) {
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
connect: {
server: {
options: {
port: _PORT,
base: 'prototype'
}
}
},
htmlvalidation: {
options: {
},
files: {
src: ['prototype/*.php']
},
},
jshint: {
beforeconcat: _SCRIPTS,
afterconcat: ['js/main.js']
},
csslint: {
check: {
src: ['css/*.css']
},
strict: {
options: {
import: 2
},
src: ['css/*.css']
},
lax: {
options: {
import: false
},
src: ['css/*.css']
}
},
compass: {
dev: {
options: {
config: 'config.rb',
force: false
}
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'js/main.js': ['js/main.js']
}
}
},
concat: {
options: {
stripBanners: true,
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */',
},
dist: {
src: _SCRIPTS,
dest: 'js/main.js',
nonull: true
},
},
cssmin: {
add_banner: {
options: {
banner: '/* <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */',
},
files: {
'css/style.css': ['css/style.css']
}
}
},
watch: {
concat: {
files: ['js/**/*.js', '!js/main.js'],
tasks: 'concat',
options: {
spawn: false,
},
},
sass: {
files: ['sass/**/*.scss'],
tasks: ['compass:dev'],
options: {
spawn: false,
},
},
/* watch and see if our javascript files change, or new packages are installed */
/* watch our files for change, reload */
livereload: {
files: ['*.html', 'css/*.css', 'img/*', 'js/*.js'],
options: {
livereload: true
}
},
}
});
// Default task (Watch)
grunt.registerTask('default', ['watch']);
// grunt.registerTask('default', [ 'preprocess:dev', 'watch']);
// Watch with localhost (For Static Templates)
grunt.registerTask('watch_with_server', [ 'connect:server', 'watch']);
// TESTING
// Run all tests
grunt.registerTask('allTests', [ 'jshint:beforeconcat', 'concat', 'jshint:afterconcat', 'cssLint', 'htmlvalidation']);
// JS Testing
grunt.registerTask('jsHint', ['jshint:beforeconcat', 'concat', 'jshint:afterconcat']);
// CSS Testing csslint
grunt.registerTask('cssLint', ['csslint:check']);
grunt.registerTask('cssLintLax', ['csslint:lax']);
grunt.registerTask('cssLintStrict', ['csslint:strict']);
// HTML Vaidation
grunt.registerTask('htmlTest', [ 'htmlvalidation']);
grunt.registerTask('printenv', function () { console.log(process.env); });
// Concat and uglify js and minify css for release
grunt.registerTask('release', [ 'concat:dist', 'uglify', 'cssmin']);
};
//要包含在项目中的所有脚本都转到此处
变量_脚本=[
“js/prefixfree.js”,
“js/jquery-1-10-2.js”,
'js/ie detect.js',
'js/application.js'
];
var_端口=7777;
module.exports=函数(grunt){
//加载所有grunt任务
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
//项目配置。
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
连接:{
服务器:{
选项:{
端口:_端口,
基地:“原型”
}
}
},
htmlvalidation:{
选项:{
},
档案:{
src:['prototype/*.php']
},
},
jshint:{
BeforeContat:\u脚本,
afterconcat:['js/main.js']
},
csslint:{
检查:{
src:['css/*.css']
},
严格的:{
选项:{
进口:2
},
src:['css/*.css']
},
宽松:{
选项:{
进口:假
},
src:['css/*.css']
}
},
指南针:{
开发人员:{
选项:{
config:'config.rb',
原力:错
}
}
},
丑陋的:{
选项:{
横幅:'/*!*/\n'
},
地区:{
档案:{
'js/main.js':['js/main.js']
}
}
},
康卡特:{
选项:{
脱衣舞横幅:没错,
横幅:'/*!-v-'+
' */',
},
地区:{
src:_脚本,
dest:'js/main.js',
诺尔:是的
},
},
cssmin:{
添加标题:{
选项:{
横幅:'/*-v-'+
' */',
},
档案:{
'css/style.css':['css/style.css']
}
}
},
观察:{
康卡特:{
文件:['js/***.js','!js/main.js'],
任务:“concat”,
选项:{
产卵:假,
},
},
sass:{
文件:['sass/**/*.scss'],
任务:['compass:dev'],
选项:{
产卵:假,
},
},
/*观察我们的javascript文件是否更改,或者是否安装了新的软件包*/
/*查看我们的文件以进行更改、重新加载*/
利弗雷罗德:{
文件:['*.html'、'css/*.css'、'img/*'、'js/*.js'],
选项:{
利弗雷罗德:没错
}
},
}
});
//默认任务(监视)
registerTask('default',['watch']);
//registerTask('default',['preprocess:dev','watch']);
//使用localhost监视(对于静态模板)
registerTask('watch_with_server',['connect:server','watch']);
//测试
//运行所有测试
registerTask('allTests',['jshint:beforeconcat','concat','jshint:afterconcat','cssLint','htmlvalidation']);
//JS测试
registerTask('jsHint',['jsHint:beforeconcat','concat','jsHint:afterconcat']);
//CSS测试csslint
grunt.registerTask('cssLint',['cssLint:check']);
grunt.registerTask('cssLintLax',['csslint:lax']);
registerTask('cssLintStrict',['csslint:strict']);
//HTML验证
grunt.registerTask('htmlTest',['htmlvalidation']);
registerTask('printenv',函数(){console.log(process.env);});
//Concat和uglify js以及缩小css以供发布
grunt.registerTask('release',['concat:dist','uglify','cssmin']);
};
非常感谢我将“livereload”移动到手表任务中的“concat”上方,使其工作正常。不知道为什么这会有不同,但它的工作 如果有人知道这会影响它的原因,我很想知道。添加此项并查看:
livereload: {
files: ['*.html', 'css/*.css', 'img/*', 'js/*.js'],
options: {
livereload: true
}
},
options: {
livereload: true
},
files: '<%= options.watch.files %>',//might have to change this line
tasks: ['default', 'notify:watch']
livereload:{
文件:['*.html'、'css/*.css'、'img/*'、'js/*.js'],
选项:{
利弗雷罗德:没错
}
},
选项:{
利弗雷罗德:没错
},
文件:“”,//可能必须更改此行
任务:['default','notify:watch']
您是否收到任何错误?保存.js
文件时,grunt-watch
是否不触发任何内容?尝试使用--verbose
选项运行,查看是否出现了任何有趣的问题。最后,我通常将任务
选项视为一个数组。我知道医生说这两种情况都可以,但也许可以试试任务:['concat']
?我没有收到任何错误。更改的文件在终端中显示为已更改,但concat未运行。我把“livereload”移到了“concat”上面,成功地让它工作了。对我来说,这似乎是一个奇怪的解决方案,但它正在发挥作用。谢谢