上下文
我已经编写了一些繁重的任务,我想将它们用于我在 Sails.js 中编写的新项目。
使用 Sails.js,您可以通过将 JS 文件添加到 /tasks/register
文件夹来添加其他 grunt 任务。在讨论我添加的文件之前,让我们先讨论一下问题。
问题
sails 无法升起。调试器显示:
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 *
一起运行(任何其他)。
最佳答案
好吧,这实际上很简单。我所要做的就是更改 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 .
关于javascript - 将 load-grunt-config 与 Sails.js 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007359/