我试图在grunt中使用多个任务,其中一个是partialy工作,另一个是not found task
的错误。
此问题基于on this one,其中我使用相同的gruntfile.js
和相同的结构,即:
├── Gruntfile.js
└── grunt
├── config
│ ├── conf_sass.js
│ └── conf_home.js
└── register
├── reg_sass.js
└── reg_home.js
使用以下各个文件:
conf_sass.js
module.exports = function(grunt) {
grunt.config.set('sass', {
sass: {
options: {
style:'expanded',
compass: true
},
files: {
'src/css/app.css' : 'src/sass/app.scss'
}
},
cssmin: {
options: {
shorthandCompacting: false,
roundingPrecision: -1
},
target: {
files: {
'dist/css/app.min.css': 'src/css/app.css'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-cssmin');
};
reg_sass.js
module.exports = function(grunt) {
grunt.registerTask('compSass', ['sass']);
};
conf_home.js
module.exports = function(grunt) {
grunt.config.set('home', {
concat: {
dist : {
src: 'src/.../home/*.js',
dest: 'src/.../concat_home.js'
}
},
ngAnnotate: {
options: {
add: true
},
dist: {
files: {
'src/.../concat_home.js': 'src/.../concat_home.js'
}
}
},
uglify: {
dist: {
src: 'src/.../concat_home.js',
dest: 'app/.../home.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-ng-annotate');
};
reg_home.js
module.exports = function(grunt) {
grunt.registerTask('compHome', ['home']);
};
问题是:
sass进程在没有错误的情况下运行所有内容,但是没有执行css minify部分,即使没有任何错误。
主页进程,返回错误
警告:任务'家庭'找不到
它有什么问题?我安装了所有模块,因为它们在转移到这个新结构之前都在工作。
答案 0 :(得分:4)
有几个问题:
- 您的文件名必须与您的任务名称相同( E.g :Auction.create({
name: "Zaal Hand in Hand",
address: {
street: "Street Anon",
number: 317,
box: "AB",
postalCode: 9490,
city: "Anonty"
},
auctionDate: new Date(),
finished: true,
viewingCode: "",
// images: [{}]
images: null
});
- >任务:ngAnnotate.js
)
- 您的任务不是由grunt插件分组的
- 共享配置任务和注册任务的名称,然后您无法设置ngAnnotate
配置任务和home
注册任务,因为当您使用home
调用它时,grunt无法了解您所指的任务。
您必须遵守配置任务的这些规则:在一个文件中使用相同插件的组配置任务,不要在配置任务中混用grunt-plugins,注册任务就可用于此作业。
当前配置存在问题,要调用 cssmin 任务,您必须运行grunt home
并且没有意义。这就是为什么通过grunt插件对配置任务进行分组,您使用grunt sass:cssmin
调用 cssmin 任务或使用grunt cssmin
以下是一个例子:
grunt cssmin:<subtask_name>
我们在这里注册了 sass 配置任务,要运行它,我们使用module.exports = function(grunt) {
grunt.config.set('sass', {
website: {
options: {
style:'expanded',
compass: true
},
files: {
'src/css/app.css' : 'src/sass/app.scss'
}
},
admin: {
options: {
style:'expanded',
compass: true
},
files: {
'src/css/app.css' : 'src/sass/app.scss'
}
},
});
grunt.loadNpmTasks('grunt-contrib-sass');
};
。它将在其中运行网站和 admin 子任务中的所有子任务。
现在,如果我们只想运行网站任务,我们运行:grunt sass
然后在你的情况下,这是你的结构应该是什么样的:
grunt sass:website
您的├── Gruntfile.js
└── grunt
├── config
│ ├── sass.js
│ ├── concat.js
│ ├── cssmin.js
│ ├── uglify.js
│ └── ngAnnotate.js
└── register
├── sassAndCssmin.js
└── home.js
文件:
sass.js
您的module.exports = function(grunt) {
grunt.config.set('sass', {
sass: {
options: {
style:'expanded',
compass: true
},
files: {
'src/css/app.css' : 'src/sass/app.scss'
}
},
});
grunt.loadNpmTasks('grunt-contrib-sass');
};
文件:
cssmin.js
您的module.exports = function(grunt) {
grunt.config.set('cssmin', {
cssmin: {
options: {
shorthandCompacting: false,
roundingPrecision: -1
},
target: {
files: {
'dist/css/app.min.css': 'src/css/app.css'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-cssmin');
};
文件:
concat.js
您的module.exports = function(grunt) {
grunt.config.set('concat', {
home: {
dist : {
src: 'src/.../home/*.js',
dest: 'src/.../concat_home.js'
}
},
});
grunt.loadNpmTasks('grunt-contrib-concat');
};
文件:
ngAnnotate.js
其他配置任务的相同过程。
以下是注册任务的示例:
您的module.exports = function(grunt) {
grunt.config.set('ngAnnotate', {
home: {
options: {
add: true
},
dist: {
files: {
'src/.../concat_home.js': 'src/.../concat_home.js'
}
}
},
});
grunt.loadNpmTasks('grunt-ng-annotate');
};
文件:
sassAndCssmin.js
您的module.exports = function(grunt) {
grunt.registerTask('sassAndCssmin', [
'sass',
'cssmin'
]);
};
文件:
home.js