【问题标题】:grunt task is not executing after deploying to heroku部署到 heroku 后,grunt 任务未执行
【发布时间】:2015-09-13 21:36:15
【问题描述】:

我有一个使用sailscasts 中的步骤创建的sails 应用程序,它在开发中可以正常工作。

但是当我将它推送到heroku时,grunt任务没有执行并且css和javascript没有链接。

我在 Gruntfile.js 中注册了以下任务

grunt.registerTask('heroku:production', 'build');

我的node版本是0.12.7,sails版本是0.11.0

这可能与

有关

https://github.com/balderdashy/sails/issues/1872 但我不确定如何解决。

感谢任何帮助。

【问题讨论】:

    标签: node.js heroku sails.js


    【解决方案1】:

    这里的问题是 Sails 有要调用的硬编码任务。如果您查看lib/hooks/grunt/index.js,您将看到调用您的任务的initialize 方法。

    initialize: function (cb) {
      sails.log.verbose('Loading app Gruntfile...');
    
      if(sails.config.environment === 'production') {
        return this.runTask('prod', cb);
      }
    
      this.runTask('default', cb);
    }
    

    因此,您必须有两个名称为 proddefault 的任务。

    如果我没记错的话,Heroku 在生产模式下运行你的应用程序,所以你必须有你的 prod 任务(即使你修改了一些东西,你也必须修改 prod 任务),而不是 heroku:production .

    【讨论】:

    • 有没有一种简单的方法可以防止 grunt 在生产中缩小并使用默认的 css 和 js 来开发它?我猜我必须在其中一项繁重的任务中注释掉一些东西,但我不确定是哪一项。
    • 正如我所说,您需要做的就是修改prod 任务。查看tasks/registertasks/config 文件夹,您会发现可以修改的Grunt 任务。
    • 我在 tasks/register/prod.js 中删除了对 cssmin 的调用,但现在我在运行sails lift --prod 时没有得到 css 是否有另一种方法可以停止缩小步骤,以便我可以调试原因我的样式在生产中没有正确呈现?
    • sails-linker 任务呢?只是在不了解发生了什么的情况下删除一些任务并不能解决这个问题。你以前和 Grunt 合作过吗?您有一组任务可以缩小资产、复制资产并与 EJS 模板链接。如果您不缩小 CSS,那么您不需要链接产品资产,而是链接开发资产。所以禁用sails-linker prod 任务。
    • @Das:@EugeneObrezkov 是正确的,因为您添加了 heroku:production 任务不会运行它——不确定您从哪里得到它,但这是我们通常与用于在 Heroku 上将 Sails 应用程序部署到生产环境的特殊 buildpack。如果您关注this answer,它应该可以让您一路走好。
    猜你喜欢
    • 2013-04-02
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多