Typescript 向sails.js添加自定义grunt任务
我刚接触sails.js,但在过去几天里我一直在阅读大量文档,所以我觉得我对这个平台有了基本的了解。但我似乎无法添加和注册自定义grunt任务。我试过几种方法,但似乎都不管用。所以我想我应该保持它的简单性,只是用一个现有的注册文件注册一个任务,但我仍然不打算让这个方法工作 因此,我在tasks/config/comp.js中添加了以下GruntfileTypescript 向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', {
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添加的语法之间的区别。再次感谢你的帮助。