sails.js 无法识别新任务
Grunt in sails.js failing to recognise new task
我正在尝试在 sails.js 应用程序中添加一个新的 g运行t 任务。
为了保持我的测试用例简单,我将复制任务复制到一个新文件 copy-tests.js,它也在 tasks/config 文件夹中。
我修改了 copy-tests.js 将 set 方法的第一个参数更新为 'copy-tests',所以它现在显示为
module.exports = function(grunt) {
grunt.config.set('copy-tests', {
dev: {
files: [{
expand: true,
cwd: './assets',
src: ['**/*.!(coffee|less)'],
dest: '.tmp/public'
}]
},
build: {
files: [{
expand: true,
cwd: '.tmp/public',
src: ['**/*'],
dest: 'www'
}]
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
};
我已更新 compileAssets.js 以添加我的新任务,因此现在显示为
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'copy-tests:dev',
'coffee:dev',
'jade:dev'
]);
};
当我尝试升起风帆应用程序时,我得到 'Task "copy-tests:dev" not found'
我知道 g运行t 可以看到我的文件,因为我已将日志语句添加到 Gruntfile.js,如下所示
var taskConfigurations = loadTasks('./tasks/config'),
registerDefinitions = loadTasks('./tasks/register');
console.log(taskConfigurations);
当这条语句记录时,我可以在其他任务中看到 copy-tests
任何人都可以帮助解释为什么 g运行t 声称找不到 copy-tests:dev 吗?
或者,也许我的做法不对。我想要实现的是有两个复制任务,一个是将我的主要构建内容复制到 .tmp 文件夹,另一个是将我的客户端测试复制到 .tmp 文件夹。稍后我将确保只有我的开发人员构建 运行 两个复制任务,我的产品只会 运行 第一个。我认为最好的方法是在配置文件夹中使用两个 g运行t 任务,但也许还有另一种方法...
我不需要定义第二个任务来拥有替代副本,而是需要按如下方式添加到复制任务
module.exports = function(grunt) {
grunt.config.set('copy', {
dev: {
files: [{
expand: true,
cwd: './assets',
src: ['**/*.!(coffee|less)'],
dest: '.tmp/public'
}]
},
devTests: {
files: [{
expand: true,
cwd: './tests',
src: ['**/*.*'],
dest: '.tmp/public/tests'
}]
},
build: {
files: [{
expand: true,
cwd: '.tmp/public',
src: ['**/*'],
dest: 'www'
}]
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
};
我的 compileAssets 看起来像
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'copy:devTests',
'coffee:dev',
'jade:dev'
]);
};
当我查看 sails-linker.js 任务并看到其中有多少目标时,我意识到了这一点。我一直将目标视为构建目标,并假设它们具有开发、测试、生产等值,但它们似乎是一个更广泛的概念,我可能想做的每种类型的复制都应该是 copy.js任务。
我正在尝试在 sails.js 应用程序中添加一个新的 g运行t 任务。
为了保持我的测试用例简单,我将复制任务复制到一个新文件 copy-tests.js,它也在 tasks/config 文件夹中。
我修改了 copy-tests.js 将 set 方法的第一个参数更新为 'copy-tests',所以它现在显示为
module.exports = function(grunt) {
grunt.config.set('copy-tests', {
dev: {
files: [{
expand: true,
cwd: './assets',
src: ['**/*.!(coffee|less)'],
dest: '.tmp/public'
}]
},
build: {
files: [{
expand: true,
cwd: '.tmp/public',
src: ['**/*'],
dest: 'www'
}]
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
};
我已更新 compileAssets.js 以添加我的新任务,因此现在显示为
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'copy-tests:dev',
'coffee:dev',
'jade:dev'
]);
};
当我尝试升起风帆应用程序时,我得到 'Task "copy-tests:dev" not found'
我知道 g运行t 可以看到我的文件,因为我已将日志语句添加到 Gruntfile.js,如下所示
var taskConfigurations = loadTasks('./tasks/config'),
registerDefinitions = loadTasks('./tasks/register');
console.log(taskConfigurations);
当这条语句记录时,我可以在其他任务中看到 copy-tests
任何人都可以帮助解释为什么 g运行t 声称找不到 copy-tests:dev 吗?
或者,也许我的做法不对。我想要实现的是有两个复制任务,一个是将我的主要构建内容复制到 .tmp 文件夹,另一个是将我的客户端测试复制到 .tmp 文件夹。稍后我将确保只有我的开发人员构建 运行 两个复制任务,我的产品只会 运行 第一个。我认为最好的方法是在配置文件夹中使用两个 g运行t 任务,但也许还有另一种方法...
我不需要定义第二个任务来拥有替代副本,而是需要按如下方式添加到复制任务
module.exports = function(grunt) {
grunt.config.set('copy', {
dev: {
files: [{
expand: true,
cwd: './assets',
src: ['**/*.!(coffee|less)'],
dest: '.tmp/public'
}]
},
devTests: {
files: [{
expand: true,
cwd: './tests',
src: ['**/*.*'],
dest: '.tmp/public/tests'
}]
},
build: {
files: [{
expand: true,
cwd: '.tmp/public',
src: ['**/*'],
dest: 'www'
}]
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
};
我的 compileAssets 看起来像
module.exports = function (grunt) {
grunt.registerTask('compileAssets', [
'clean:dev',
'jst:dev',
'less:dev',
'copy:dev',
'copy:devTests',
'coffee:dev',
'jade:dev'
]);
};
当我查看 sails-linker.js 任务并看到其中有多少目标时,我意识到了这一点。我一直将目标视为构建目标,并假设它们具有开发、测试、生产等值,但它们似乎是一个更广泛的概念,我可能想做的每种类型的复制都应该是 copy.js任务。