Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 向sails.js添加自定义grunt任务_Typescript_Gruntjs_Sails.js_Grunt Ts - Fatal编程技术网

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

Typescript 向sails.js添加自定义grunt任务,typescript,gruntjs,sails.js,grunt-ts,Typescript,Gruntjs,Sails.js,Grunt Ts,我刚接触sails.js,但在过去几天里我一直在阅读大量文档,所以我觉得我对这个平台有了基本的了解。但我似乎无法添加和注册自定义grunt任务。我试过几种方法,但似乎都不管用。所以我想我应该保持它的简单性,只是用一个现有的注册文件注册一个任务,但我仍然不打算让这个方法工作 因此,我在tasks/config/comp.js中添加了以下Gruntfile module.exports = function(grunt) { grunt.config.set('comp', {

我刚接触sails.js,但在过去几天里我一直在阅读大量文档,所以我觉得我对这个平台有了基本的了解。但我似乎无法添加和注册自定义grunt任务。我试过几种方法,但似乎都不管用。所以我想我应该保持它的简单性,只是用一个现有的注册文件注册一个任务,但我仍然不打算让这个方法工作

因此,我在tasks/config/comp.js中添加了以下Gruntfile

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
时,就会出现以下错误

信息:正在启动应用程序

信息: 信息:-…-。 信息: 信息:Sails您可能有一个格式错误的LESS、SASS、CoffeeScript文件等。 错误: 错误:->或者您没有访问
.tmp
目录的权限? 错误:例如,
C:\Users\josh\Documents\PGW\.tmp
? 错误: 错误:如果您认为可能是这种情况,请尝试运行: 错误:sudo chown-R您的计算机\u用户名C:\Users\josh\Documents\PGW.tmp

我已经为此绞尽脑汁好几个小时了,我不明白为什么
sails lift
无法运行我的任务。我觉得在阅读sails文档和其他stackoverflow文章之间,我很好地遵循了方向。有人能帮我理解我在这里遗漏了什么吗


谢谢

您正在尝试运行您定义的
comp
目标,但是grunt没有找到相关的
comp
taskname-->grunt插件映射来执行它

看起来您正在尝试使用
grunt ts

grunt.loadNpmTasks('grunt-ts');
这将添加
ts
任务。在目标定义中将“comp”更改为
ts

grunt.config.set('ts', {
并更新compileasets.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
如果您真的想静态地将taskname映射到插件,您可以使用jit grunt之类的工具来实现这一点:

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

这个答案是正确的,我在发布我原来的问题后不久就发现了。但是现在,我正试图弄清楚我是如何知道添加一个特别称为ts的任务的。我也是grunt的新手,所以我想我只是想弄清楚我在grunt ts npm页面上看到的grunt init语法和我为sails添加的语法之间的区别。再次感谢你的帮助。