Gruntjs Grunt.js监视-始终监视节点_模块
我只在livereload上使用Grunt。它工作正常,但我注意到它有很高的CPU,当我使用“-verbose”运行它时,我看到它正在监视整个“node_modules”文件夹 所以,我做了一些研究,试图忽略这一点。不幸的是,没有成功 “gruntfile.js”中我的手表部分是: 基本上我是说我想让grunt监视所有的js、css和index.html文件。显式添加了忽略“节点_模块”的代码,但它仍然表示正在监视它,CPU运行率约为30%。(Mac OSx) ================== 但我注意到一件事: 当我在“gruntfile.js”中进行更改时(例如,在“watch”任务的“files”属性中再添加一个文件),然后它重新启动grunt,在控制台中,我看到它开始只查看我想要的文件,然后CPU低于1%。(我想这应该是最初的样子。) 我做错了什么 ==================== 编辑:不幸的是,当我更改Grunfile文件时,我只看到我想要的文件被监视,然后livereload的东西就不再工作了 ==================== 这是我开始写的文章: 这是我的package.json文件:Gruntjs Grunt.js监视-始终监视节点_模块,gruntjs,livereload,node-modules,Gruntjs,Livereload,Node Modules,我只在livereload上使用Grunt。它工作正常,但我注意到它有很高的CPU,当我使用“-verbose”运行它时,我看到它正在监视整个“node_modules”文件夹 所以,我做了一些研究,试图忽略这一点。不幸的是,没有成功 “gruntfile.js”中我的手表部分是: 基本上我是说我想让grunt监视所有的js、css和index.html文件。显式添加了忽略“节点_模块”的代码,但它仍然表示正在监视它,CPU运行率约为30%。(Mac OSx) =================
{
"name": "grunt-reload",
"version": "1.0.0",
"devDependencies": {
"grunt": "~0.4.3",
"matchdep": "~0.3.0",
"grunt-express": "~1.2.1",
"grunt-contrib-watch": "~0.6.0",
"grunt-open": "~0.2.3"
}
}
这是我的Grunfile.js:
module.exports = function(grunt) {
require('matchdep')
.filterDev('grunt-*')
.forEach(grunt.loadNpmTasks);
grunt.initConfig({
// the web server ..
express: {
all: {
options: {
bases: [__dirname],
port: 8888,
hostname: 'localhost',
livereload: true
}
}
},
// the watch stuff ..
watch: {
all: {
files: ['js/**/*.js', 'css/**/*.css', 'index.html'],
options: {
livereload: true
}
}
},
// the automatic opening stuff ..
open: {
all: {
path: 'http://localhost:8888/index.html'
}
}
});
// create the server task ..
grunt.registerTask(
'server',
['express', 'open', 'watch']
);
}; // end of "module.exports" ..
我从“grunt服务器”开始这一切。编辑:在共享Gruntfile后,问题变得更清楚了 在
grunt express
配置中,您已将livereload
设置为true
,并将base
设置为\u dirname
,这是运行自中的文件夹grunfile
现在,让我们看看grunt express
文档:
基础
类型:字符串|数组默认值:null
将从中提供静态文件的基本(或根)目录。将为基的每个条目生成connect.static()当livereload设置为true(或设置为特定端口号)时,将为您(在运行时)创建一个监视任务,以监视您的basePath/***
(强调矿山)
因此,在grunt express
配置中,您将livereload
设置为监视basepath中的所有文件,其中当然包括node\u模块
您有两种选择:
watch
任务,并相应地配置grunt表达式
basepath(只需复制其他配置)
grunt express->base
config中的node\u模块
base
并在另一个watch
任务中处理livereloading
node\u modules
文件夹位于何处?如果它位于根目录下,只要没有任何匹配的glob模式,您就可以完全删除node\u modules
参数:
// the watch stuff ..
watch: {
all: {
files: ['js/**/*.js', 'css/**/*.css', 'index.html'],
options: {
interval: 5007,
livereload: true
}
}
},
现在您正在观看:js
文件夹下的所有js
文件,根目录下的index.html
,等等
但是,如果在js/node_modules
下有node_modules
,则可以显式忽略该文件夹及其中的文件:
files: ['!js/node_modules/**', 'js/**/*.js', 'css/**/*.css', 'index.html'],
无论如何,根据您的GrunFile和
节点模块的文件夹位置,您的配置应该可以正常工作。“节点模块”位于根目录中。目前,我只指定了“js”和“css”文件夹中的文件,以及要监视的index.html文件,但它仍然监视所有文件,CPU运行速度很高。它可能是“所有”这个词吗?这就是为什么它会从根本上观察一切。。。这不应该与目标名称有任何关系,并且查看源代码,我也找不到指向该方向的任何其他内容。。。除了配置中的all
,您没有其他watch
-目标吗?奇怪。我添加了“package.json”和“Gruntfile.js”文件的内容,希望能提供更多信息。谢谢,这有助于理解问题:)。。。(我刚刚从express配置中删除了“livereload:true”,现在一切正常了-CPU小,并且可以观看+livereload功能的启动和运行:)(顺便说一句,原始文章中的评论被禁用:(…我无法添加评论,这样其他人就不会遇到同样的问题。)
files: ['!js/node_modules/**', 'js/**/*.js', 'css/**/*.css', 'index.html'],