我试图缩小我的应用但是不能通过Grunt ngAnnotate,因为它会抛出错误
错误:由于解析错误,无法处理源 解析正则表达式时出错:正则表达式无效:/ [A-Z-z0-9!#_;?:& .-'] /:字符类中的范围乱序(3:22)
在一个看起来像
的指令上myApp.directive('allowedChars', function() {
var EMAIL_REGEXP = /[A-Za-z0-9!#_\?:&\.- ']/;
return {
require: 'ngModel',
restrict: '',
link: function(scope, elm, attrs, ctrl) {
// only apply the validator if ngModel is present and Angular has added the allowed characters validator
if (ctrl && ctrl.$validators.chars) {
// this will overwrite the default Angular email validator
ctrl.$validators.email = function(modelValue) {
return ctrl.$isEmpty(modelValue) || EMAIL_REGEXP.test(modelValue);
};
}
}
};
});
Gruntfile.js看起来像
module.exports = function(grunt) {
//grunt wrapper function
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
ngAnnotate: {
options: {
singleQuotes: true
},
app: {
files: [
{
expand: true, // Enable dynamic expansion.
cwd: './app/js/controllers/', // Src matches are relative to this path.
src: ['**/*.js'], // Actual pattern(s) to match.
dest: './app/js/build/controllers', // Destination path prefix.
ext: '.min.js', // Dest filepaths will have this extension.
extDot: 'first' // Extensions in filenames begin after the first dot
},
{
expand: true, // Enable dynamic expansion.
cwd: './app/js/services/', // Src matches are relative to this path.
src: ['**/*.js'], // Actual pattern(s) to match.
dest: './app/js/build/services', // Destination path prefix.
ext: '.min.js', // Dest filepaths will have this extension.
extDot: 'first' // Extensions in filenames begin after the first dot
},
{
expand: true, // Enable dynamic expansion.
cwd: './app/js/directives/', // Src matches are relative to this path.
src: ['**/*.js'], // Actual pattern(s) to match.
dest: './app/js/build/directives', // Destination path prefix.
ext: '.min.js', // Dest filepaths will have this extension.
extDot: 'first' // Extensions in filenames begin after the first dot
},
],
}
},
});
//load grunt tasks
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-ng-annotate');
//register grunt default task
grunt.registerTask('default', ['ngAnnotate', 'concat', 'uglify']);
}
答案 0 :(得分:1)
如错误所示,您的正则表达式无效。尝试转义一些特殊字符。像这样:
var EMAIL_REGEXP = /[A-Za-z0-9\!\#\_\?\:\&\.\- \']/;
这应该允许ngAnnotate
编译。