向sails.js添加自定义grunt任务

时间:2017-06-08 22:47:14

标签: typescript gruntjs sails.js grunt-ts

我是sails.js的新手,但过去几天我一直在阅读一堆文档,所以我觉得我对平台有了基本的把握。但我似乎无法添加和注册自定义grunt任务。我尝试了几种方法,似乎没有一种方法可行。所以我想我会保持简单,只是用一个现有的寄存器文件注册一个任务,但我仍然不打算让这个方法工作。

所以我将以下Gruntfile添加到tasks / config / comp.js

module.exports = function(grunt) {
    grunt.config.set('comp', {
        dev: {
            options: {
                module: 'system',
                moduleResolution: 'node',
                target: 'es3',
                experimentalDecorators: true,
                emitDecoratorMetadata: true,
                noImplicitAny: false
            },
            files: [{
                expand: true,
                cwd: 'assets/js/',
                src: [ '**/*.ts' ],
                dest: '.tmp/public/js',
                ext: '.js'
            }]
        }
    });

    grunt.loadNpmTasks('grunt-ts');
};

我将以下行添加到tasks / register / compileAssets.js

/**
 * `compileAssets`
 *
 * ---------------------------------------------------------------
 *
 * This Grunt tasklist is not designed to be used directly-- rather
 * it is a helper called by the `default`, `prod`, `build`, and
 * `buildProd` tasklists.
 *
 * For more information see:
 *   http://sailsjs.org/documentation/anatomy/my-app/tasks/register/compile-assets-js
 *
 */
module.exports = function(grunt) {
  grunt.registerTask('compileAssets', [
    'clean:dev',
    'jst:dev',
    'less:dev',
    'copy:dev',
    'coffee:dev',
    'comp:dev'
  ]);
};

但是每当我运行sails lift时,我都会收到以下错误

  

info:启动应用...

     

信息:   信息:.- ..-。   信息:   info:Sails< | 。,..-。   info:v0.12.13 | \   信息:/ |。\   info:/ || \   信息:,'|' \   信息:.-'.- == | / _--'   info:--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in C:\ Users \ josh \ Documents \ PGW`   info:要查看您的应用,请访问http://localhost:1337   info:要关闭Sails,请随时按+ C.

     

debug:--------------------------------------------- ----------   debug ::: Thu Jun 08 2017 16:32:01 GMT-0600(Mountain Daylight Time)

     

debug:环境:开发   debug:端口:1337   debug:------------------------------------------------ -------   错误:** Grunt ::发生错误。 **

     

错误:

     

因警告而中止。

     

警告:找不到任务“comp:dev”。

     

错误:看起来发生了Grunt错误 -   错误:请修复它,然后重新启动Sails 以继续运行任务(例如,观察资产的变化)   错误:或者如果您遇到困难,请查看下面的问题排查提示。

     

错误:疑难解答提示:   错误:   错误:* - >是否在本地安装了“grunt”和相关的grunt任务模块?如果您不确定,请运行npm install。   错误:   错误:* - >您可能有格式错误的LESS,SASS,CoffeeScript文件等。   错误:   错误:* - >或者您可能没有权限访问.tmp目录?   错误:例如,C:\Users\josh\Documents\PGW\.tmp?   错误:   错误:如果您认为可能是这种情况,请尝试运行:   错误:sudo chown -R YOUR_COMPUTER_USER_NAME C:\ Users \ josh \ Documents \ PGW.tmp

我几个小时以来一直在抨击我,我不明白为什么sails lift不能完成我的任务。我觉得我在阅读sails docs和其他stackoverflow文章之间已经很好地遵循了指示。有人能帮助我理解我在这里缺少的东西吗?

由于

1 个答案:

答案 0 :(得分:0)

您正在尝试运行已定义的comp目标但grunt未找到关联的comp 任务名称 - > grunt插件映射以执行它。

您似乎正在尝试使用grunt-ts

grunt.loadNpmTasks('grunt-ts');

其中添加了ts任务。改变' comp'到达目标定义中的ts

grunt.config.set('ts', {

并更新compileAssets.js文件

 grunt.registerTask('compileAssets', [
        'clean:dev',
        'jst:dev',
        'less:dev',
        'copy:dev',
        'coffee:dev',
        'ts:dev' //execute grunt-ts
      ]);

这应该足以修复。如果您仍有问题,请确保已安装grunt-ts

npm install grunt-ts

如果你真的想静态地将任务名映射到插件,你可以使用像jit-grunt这样的东西为你做这个:

require('jit-grunt')(grunt, {
      comp: 'grunt-ts', //comp now maps to grunt-ts plugins
});