Gruntjs Grunt.js监视-始终监视节点_模块

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) =================

我只在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文件:

{
  "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'],