Grunt.js没有留在观看模式

时间:2014-11-06 15:38:58

标签: javascript node.js gruntjs

我确信我错过了一些东西。我试图将一个项目的gruntfile重新用于一个新项目。该文件运行并启动服务器实例,但不是在我设置的端口,并且它不会进入监视模式"。

grunt命令导致 Opening server for /Users/stevelombardi/Documents/command-central/cc on port 1337.

事实上,如果我打开我的浏览器http://127.0.0.1:1337,我会看到主页。但是,我期望端口9000(请参阅gruntfile)并观察我的文件的更改。

这是gruntfile。我在这里搞砸了什么?

'use strict';

module.exports = function(grunt) {

require('load-grunt-tasks')(grunt);

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),


    watch: {
      options: {
        livereload: true,
      },
      html: {
        files: [
          '{,*/}*.html'
        ]
      },
      sass: {
        files: ['sass/{,*/}*.scss'],
        tasks: ['sass:app'],
        options: {
          livereload: false
        }
      },
      js: {
        files: ['scripts/{,*/}*.js']
      },
      css: {
        files: ['css/*.css'],
      },
      gruntfile: {
        files: ['Gruntfile.js']
      }
    },

    sass: {
      app: {
        options: {
          style: 'compact',
          sourcemap: 'auto'
        },
        files: {
          'css/styles.css': 'sass/styles.scss',

        }
      }
    },

    connect: {
      options: {
        port: 9000,
        // Change this to '0.0.0.0' to access the server from outside.
        hostname: '127.0.0.1',
        livereload: 35729
      },
      livereload: {
        options: {
          open: true,
          base: ''
        }
      },
      livepreview: {
        options: {
          open: true,
          base: ''
        }
      }
    }


});


  grunt.registerTask('default', [
    'sass',
    'connect:livepreview',
    'watch'
  ]);

};

2 个答案:

答案 0 :(得分:0)

我不知道为什么,但是这个Gruntfile现在运行正常。我删除了我的node_modules文件夹和package.json,然后重新启动了一个新的并安装了这些模块:

"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-connect": "^0.8.0",
"grunt-contrib-sass": "^0.8.1",
"grunt-contrib-watch": "^0.6.1",
"load-grunt-tasks": "^1.0.0"
}

它按照我的预期运作。

答案 1 :(得分:0)

这对我有用(修改我的以适应你的情况) - 我认为"打开"会帮助你:

在我的gruntfile.settings.json中:

"webServer": {
    "port": 9000
}

在我的任务之外:

function mountFolder(connect, dir) {
    path = path || require('path');
    return connect.static(path.resolve(dir));
}

然后我的连接看起来像这样:

connect: {
        livereload: {
            options: {
                port: settings.webServer.port,
                hostname: '*',
                middleware: function (connect) {
                    livereload = livereload || require('connect-livereload');
                    return [
                        livereload(),
                        mountFolder(connect, '.'),
                        expireHeaders
                    ];
                }
            }
        },
        web: {
            options: {
                port: settings.webServer.port,
                hostname: '*',
                middleware: function (connect) {
                    return [
                        mountFolder(connect, '.'),
                    ];
                }
            }
        }
},
open: {
    web: {
        path: 'http://localhost:<%= connect.web.options.port %>'
    }
}

最后

grunt.task.run([
    'web',
    'connect:livereload',
    'open:web',
    'watch'
])

否则,我唯一能想到的可能是其他东西已经在使用该端口吗?