Node.js / Grunt - 无法运行Grunt的手表 - 为什么?

时间:2013-10-08 20:55:39

标签: javascript node.js terminal gruntjs grunt-contrib-watch

我正在尝试使用autoprefixer css后处理器。我正在按照教程安装npm。使用npm,然后使用package.json文件在我的项目根目录中安装了grunt和autoprefixer:https://github.com/nDmitry/grunt-autoprefixer/blob/master/package.json

在本教程之后,我在项目根目录中创建了这个Gruntfile.js

module.exports = function (grunt) {
    grunt.initConfig({
        autoprefixer: {
            dist: {
                files: {
                    'build/style.css': 'style.css'
                }
            }
        },
        watch: {
            styles: {
                files: ['style.css'],
                tasks: ['autoprefixer']
            }
        }
    });
    grunt.loadNpmTasks('grunt-autoprefixer');
    grunt.loadNpmTasks('grunt-contrib-watch');
};

之后教程建议使用Grunt Watch

./node_modules/.bin/grunt watch

结果是

-bash: ./node_modules/.bin/grunt: No such file or directory

我还尝试导航到项目中的grunt文件夹,然后说

-bash: node_modules/grunt: is a directory

我的本​​地用户文件夹中也有一个node_modules文件夹,但找到该文件夹​​grunt也只是告诉我它是一个文件夹。

请帮助我,为什么这不起作用?我愿意真正学习咕噜声,但我甚至无法开始使用入门指南......

2 个答案:

答案 0 :(得分:3)

您安装了grunt-cli吗? (npm install grunt-cli -g)在项目根目录中运行grunt会发生什么?您应该运行的命令只是项目根目录中的grunt watch

编辑:您的项目根目录还必须有一个package.json文件,您可以在其中定义开发依赖项; e.g。

{
    "name":"yourprojectname",
    "version":"0.0.1",
    "devDependencies":{
        "grunt":"*",
        "grunt-contrib-watch":"*",
        "grunt-autoprefixer":"*"
    }
}

答案 1 :(得分:1)

如果可执行文件名中有一个空格,则需要将其放在引号中

“./ node_modules / .bin / grunt watch”

否则linux会以watch为标志运行“./node_modules/.bin/grunt”。

如果仍然不起作用,

可能是一些问题,您的ldconfig未更新,文件未设置为可执行文件,或者您尝试执行命令的用户没有权限。

首先尝试运行“ldconfig”(只需键入并运行它) 更多信息在这里 http://www.cyberciti.biz/tips/linux-shared-library-management.html

chmod -x使文件可执行的文件。

运气好吗?