【问题标题】:Using load-grunt-config with Sails.js将 load-grunt-config 与 Sails.js 一起使用
【发布时间】:2015-05-02 20:53:31
【问题描述】:

上下文

我已经编写了一些繁重的任务,我想将它们用于我正在用 Sails.js 编写的新项目。

使用 Sails.js,您可以通过将 JS 文件添加到 /tasks/register 文件夹来添加额外的 grunt 任务。在我们进入我添加的文件之前,让我们谈谈这个问题。

问题

帆不会升起。调试器显示:

debug: --------------------------------------------------------
error: ** Grunt :: An error occurred. **
error: 
------------------------------------------------------------------------
ERROR
>> Unable to process task.
Warning: Required config property "clean.dev" missing. 

有问题的问题显然是 grunt,所以我尝试grunt build(它会自动与sails lift一起运行):

Running "clean:dev" (clean) task
Verifying property clean.dev exists in config...ERROR
>> Unable to process task.
Warning: Required config property "clean.dev" missing. Use --force to continue.

据此,我了解到这是一个路径问题。我们来看看我添加的文件。

/tasks/register/customTask.js

这里的任务加载load-grunt-config,这是我问题的根源:

module.exports = function(grunt) {

    // measures the time each task takes
    require('time-grunt')(grunt);
    
    // This require statement below causes my issue
    require('load-grunt-config')(grunt, {
        config: '../../package.json',
        scope: 'devDependencies',
        overridePath: require('path').join(process.cwd(), '/asset-library/grunt')
    });
    
    grunt.registerTask('customTask', [
        'newer:jshint',
        'newer:qunit',
        'newer:concat',
        'newer:cssmin',
        'newer:uglify'
    ]);

};

我曾认为使用overridePath 而不是configPath 可以解决我的问题,但可惜,事情并不是那么简单。有什么方法可以让我可以使用我自己的自定义任务文件夹和load-grunt-config,就像我在其他项目中所做的那样,还是有一些神奇的条件我可以包装require 语句?

我只需要它与grunt customTask 一起运行,而不需要grunt * 一起运行(其他任何东西)。

【问题讨论】:

    标签: javascript node.js gruntjs sails.js


    【解决方案1】:

    好的,这实际上很简单。我所要做的就是在我的 customTask.js 文件中更改 grunt.registerTask 调用:

    grunt.registerTask('customTask', [
        'newer:jshint',
        'newer:qunit',
        'newer:concat',
        'newer:cssmin',
        'newer:uglify'
    ]);
    

    到这里:

    grunt.registerTask('customTask', 'My custom tasks', function() {
        // The require statement is only run with "grunt customTask" now!
        require('load-grunt-config')(grunt, {
            config: '../../package.json',
            scope: 'devDependencies',
            overridePath: require('path').join(process.cwd(), '/asset-library/grunt')
        });
        grunt.task.run([
            'newer:jshint',
            'newer:qunit',
            'newer:concat',
            'newer:cssmin',
            'newer:uglify'
        ]);
    });
    

    如果不清楚,我确实必须移动 require('load-grunt-config') 调用,所以如果你是复制 + 粘贴,请确保删除 grunt.registerTask 调用之外的 require 语句.

    You can find more information about custom Grunt tasks here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2016-06-15
      • 2016-12-28
      • 2023-03-26
      • 2014-07-23
      • 2016-10-31
      • 2015-03-30
      相关资源
      最近更新 更多