1

我是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我都会收到以下错误

信息:正在启动应用程序...

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

调试:------------------------------------------------ ------- 调试: :: Thu Jun 08 2017 16:32:01 GMT-0600(山地夏令时间)

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

错误:

由于警告而中止。

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

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

error: 故障排除提示: error: error: *-> “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 文档和其他stackoverflow 文章之间我已经很好地遵循了指示。有人可以帮助我了解我在这里缺少什么吗?

谢谢

4

1 回答 1

1

您正在尝试运行comp您定义的目标,但 grunt 没有找到关联comp 的任务名 --> grunt 插件映射来执行它。

看起来你正在尝试使用grunt-ts

grunt.loadNpmTasks('grunt-ts');

这增加了ts任务。ts在您的目标定义中将“comp”更改为:

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
});
于 2017-06-09T10:54:02.577 回答