我对JS中的任务运行者来说很新,这是我第一次尝试使用GruntJS。在我的Gruntfile.js中,我保留了几个任务,如jshint
,cssmin
等。我可以从命令行运行它们,但是当我运行`grunt uglify'没有响应,光标转到另一条线并保持数小时。也没有显示错误消息。
以下是我的相关代码,我尝试了各种uglify配置,因为我看到不同的用户提供了一组不同的属性
//uglify:{
// options: {
// mangle : {
// except : ['jQuery', 'angular']
// },
// compress: {
// drop_console : true
// },
// banner: '*****Minified file for Pricing Plan*****',
// footer: '*********File ends**********',
// preserveComments: false
// },
// my_target:{
// options: {
// beautify: true,
// files: {
// 'scripts/pp.min.js': ['scripts/pp.js']
// }
// }
// }
//},
uglify: {
options: {
banner: '*****Minified file for Pricing Plan*****'
},
dist: {
src: 'scripts/pp.js',
dest: 'scripts/pp.min.js'
}
},
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('uglify', ['uglify']);
在命令行上,我正在运行grunt uglify
有人可以在这里说明什么是错误的,以及纠正它的方法。
如果需要:它是一个Angular1.x.x项目
编辑:我尝试安装uglifyJs并运行uglifyjs
命令。它成功地使我的代码变得丑化和缩小。除了上面的内容之外,还有什么需要做的。
答案 0 :(得分:0)
但是当我运行`grunt uglify'没有响应,光标转到另一条线并保持数小时。
我认为问题与您注册uglify
任务的方式有关。以下代码行:
grunt.registerTask('uglify', ['uglify']); //<-- Issue is here.
使用grunt.registerTask()
创建Alias Task时,请避免将taskName
命名为与taskList
数组中定义的任何项目/任务相同。
grunt.registerTask('minify', ['uglify']); //<-- Correct.
注意: 虽然在上面的示例代码中我已将taskName
更改为minify
,但它可以是您喜欢的任何有效名称。只需确保您选择的taskName
不存在taskList
数组中的某个项目。
您现在通过CLI运行修订的注册uglify
任务,如下所示:
$ grunt minify
以下是修订后的Gruntfile.js
:
module.exports = function(grunt) {
grunt.initConfig({
uglify: {
options: {
banner: '/*****Minified file for Pricing Plan*****/'
// ... <-- Your other options
},
dist: {
src: 'scripts/pp.js',
dest: 'scripts/pp.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('minify', ['uglify']);
};
( 注意 :还在横幅字符串中添加了正斜杠,以在结果文件中生成有效的JavaScript注释)