运行 并完成 "watch" 任务后 Grunt 真的很慢
Grunt really slow after running and completing "watch" task
出于某种原因,当我的终端点击时 Running "watch" task
Completed in 3.131s at Wed Jun 17 2015 21:00:56... ...) - Waiting...
它变得很慢,我们在它填充其余数据之前讨论了 1 分钟以上。
它可能是在我尝试通过 mongo-connector 将我的数据库同步到我的 elasticsearch 服务器时启动的。
会不会是我的 mongodb 减慢了一切?
有什么想法吗?
更新
这是我 Grunt.js 文件中的手表:
watch: {
injectJS: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.js',
'!<%= yeoman.client %>/{app,components}/**/*.spec.js',
'!<%= yeoman.client %>/{app,components}/**/*.mock.js',
'!<%= yeoman.client %>/app/app.js'],
tasks: ['injector:scripts']
},
injectCss: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.css'
],
tasks: ['injector:css']
},
mochaTest: {
files: ['server/**/*.spec.js'],
tasks: ['env:test', 'mochaTest']
},
jsTest: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.spec.js',
'<%= yeoman.client %>/{app,components}/**/*.mock.js'
],
tasks: ['newer:jshint:all', 'karma']
},
gruntfile: {
files: ['Gruntfile.js']
},
livereload: {
files: [
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.css',
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.html',
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.js',
'!{.tmp,<%= yeoman.client %>}{app,components}/**/*.spec.js',
'!{.tmp,<%= yeoman.client %>}/{app,components}/**/*.mock.js',
'<%= yeoman.client %>/assets/images/{,*//*}*.{png,jpg,jpeg,gif,webp,svg}'
],
options: {
livereload: true
}
},
express: {
files: [
'server/**/*.{js,json}'
],
tasks: ['express:dev', 'wait'],
options: {
livereload: true,
nospawn: true //Without this option specified express won't be reloaded
}
}
},
我有一个 client/assets/images/ 目录,里面有成千上万张图片。这会导致减速吗?
这个观察者正在看多少文件!?
一个非常常见的误用是监视一个父文件夹,而您的 "node_modules" 是一个子文件夹。因此,根据您使用的节点模块数量,此观察者可能正在观察数十万个 js 文件...
要点
1) 确保您的观察者没有在观察 "node_modules" 文件夹。
2) 尽可能使用文件过滤器来只观看您关心的文件。下面的示例仅监视 .less 文件。
// example of watcher for .less files only
watch('../Content', filter(/\.less$/, function (filename) {
console.log('file changed: ', filename);
}));
出于某种原因,当我的终端点击时 Running "watch" task
Completed in 3.131s at Wed Jun 17 2015 21:00:56... ...) - Waiting...
它变得很慢,我们在它填充其余数据之前讨论了 1 分钟以上。
它可能是在我尝试通过 mongo-connector 将我的数据库同步到我的 elasticsearch 服务器时启动的。
会不会是我的 mongodb 减慢了一切? 有什么想法吗?
更新 这是我 Grunt.js 文件中的手表:
watch: {
injectJS: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.js',
'!<%= yeoman.client %>/{app,components}/**/*.spec.js',
'!<%= yeoman.client %>/{app,components}/**/*.mock.js',
'!<%= yeoman.client %>/app/app.js'],
tasks: ['injector:scripts']
},
injectCss: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.css'
],
tasks: ['injector:css']
},
mochaTest: {
files: ['server/**/*.spec.js'],
tasks: ['env:test', 'mochaTest']
},
jsTest: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.spec.js',
'<%= yeoman.client %>/{app,components}/**/*.mock.js'
],
tasks: ['newer:jshint:all', 'karma']
},
gruntfile: {
files: ['Gruntfile.js']
},
livereload: {
files: [
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.css',
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.html',
'{.tmp,<%= yeoman.client %>}/{app,components}/**/*.js',
'!{.tmp,<%= yeoman.client %>}{app,components}/**/*.spec.js',
'!{.tmp,<%= yeoman.client %>}/{app,components}/**/*.mock.js',
'<%= yeoman.client %>/assets/images/{,*//*}*.{png,jpg,jpeg,gif,webp,svg}'
],
options: {
livereload: true
}
},
express: {
files: [
'server/**/*.{js,json}'
],
tasks: ['express:dev', 'wait'],
options: {
livereload: true,
nospawn: true //Without this option specified express won't be reloaded
}
}
},
我有一个 client/assets/images/ 目录,里面有成千上万张图片。这会导致减速吗?
这个观察者正在看多少文件!?
一个非常常见的误用是监视一个父文件夹,而您的 "node_modules" 是一个子文件夹。因此,根据您使用的节点模块数量,此观察者可能正在观察数十万个 js 文件...
要点
1) 确保您的观察者没有在观察 "node_modules" 文件夹。
2) 尽可能使用文件过滤器来只观看您关心的文件。下面的示例仅监视 .less 文件。
// example of watcher for .less files only
watch('../Content', filter(/\.less$/, function (filename) {
console.log('file changed: ', filename);
}));