【问题标题】:Grunt only runs default taskGrunt 只运行默认任务
【发布时间】:2015-12-24 06:30:55
【问题描述】:

使用 OSX Maveriks、iTerminal、zsh。

问题:Grunt 只运行默认任务,而不管您指定的任务。 问题:它只发生在 1 台计算机上。

grunt 不运行但默认任务的原因可能是什么。我已经与 Grunt 合作了很长时间,我们在我工作的公司使用它。一切都非常顺利,除了一位单身同事,当他运行grunt myTask 时,如果他只运行grunt,他会喜欢,即使我运行像grunt myNotExistentTask 这样的虚构任务,它也会忽略它一次又一次地看起来运行grunt

我确实检查了愚蠢的错误:

  1. 检查我正在访问同一个项目文件夹(多次)。
  2. 我删除了默认任务,看看它是否抱怨,确实如此。
  3. 我检查了 Gruntfile 没有抛出错误。然后我强制抛出错误,看看它是否会抱怨,确实如此。
  4. 已运行npm install
  5. 检查 bashrc 和 zshrc 是否有 grunt 命令或其他内容。
  6. 显然 grunt 是可以访问的。
  7. 在默认终端和 iTerm 中运行。
  8. “您是否尝试过打开和关闭它?”是的,我确实重新启动了笔记本电脑。
  9. 我尝试使用多台同事的笔记本电脑,但它只发生在一台笔记本电脑上。

我确实没有有时间(但我会检查这些):

  1. 测试在他笔记本电脑的其他地方创建一个简单的 Gruntfile,但我有一种奇怪的感觉,它的行为方式相同。
  2. 重新安装 grunt。这会有帮助吗?
  3. grunt --version 或其他人,我假设它在package.json 中具有指定的版本。

我们正在使用:

"grunt-cli": "^0.1.13",
"grunt": "^0.4.4"

这里的代码不会导致问题,因为每台计算机都运行它,但只有一台。我无法显示实际代码,但我可以给你样板文件,以防万一有一些我不知道的神秘事物:

module.exports = function(grunt) {

  grunt.initConfig({

    pkg : grunt.file.readJSON("package.json"),

    someTask : {
      options : {

      },
      target1 : {

      }
    }
  });

  grunt.loadNpmTasks("dependency1");
  grunt.loadNpmTasks("dependency2");
  grunt.loadNpmTasks("etc");

  grunt.registerTask("default", function () {
    // creates a server with one of the dependencies
  });

  grunt.registerTask("w", function () {
    // creates a watch with one of the dependencies
  });

};

我们不只是做grunt.registerTask("default", [".."]) 之类的事情是有原因的。基本上,我们的项目太大了,我们需要更改每个任务的设置以提高性能(例如,不要观看太多文件等)。

我用谷歌搜索了这种不同的方式,但之前找不到任何关于这种情况的信息。欢迎任何想法。

编辑

我忘了提到他已经在这个项目上工作了一段时间,我们最近才注意到,因为他不需要使用任何其他任务,除了默认任务,直到几天前他需要使用不同的任务,总之,我们不知道它何时或为何开始。

【问题讨论】:

  • 嗨迷彩,我有同样的环境,但我从来没有遇到过这种问题。我想按照线程找出可能是什么问题。一个愚蠢的问题:您项目中的所有模块都以root权限安装(需要时)?
  • 运行grunt --help时会列出哪些任务?
  • 在他的机器上运行which grunt的结果是什么?
  • 好的,多亏了你@XavierPriour,我们才能找到它。我们运行type -a grunt,结果发现有 2 条路径供 grunt 使用。我将添加它作为答案。

标签: node.js gruntjs osx-mavericks


【解决方案1】:

之后:

  1. 删除和克隆存储库。
  2. 正在删除 npm_modules。
  3. 重新安装一切。
  4. 创建一个独立的项目来测试这个问题。

由于@XavierPriour 的评论,我们检查了 grunt 的路径

将 zsh 与 iTerm 一起使用:

➜  folder git:(branch) which grunt
/usr/local/bin/grunt
➜  folder git:(branch) type -a grunt
grunt is /usr/local/bin/grunt
grunt is /usr/bin/grunt

我们删除了多余的 grunt 二进制文件:

➜  folder git:(branch) cd /usr/bin
➜  bin sudo -rm grunt

一切都开始正常工作。我认为问题是他全局安装了 grunt 而不仅仅是 grunt-cli,尽管我不确定。

this question 最受欢迎的回答显示了如何安装 grunt 的注意事项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2018-08-28
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多