Я охотился здесь и довольно долго искал в Google, и не вижу ничего очевидного, хотя я предупреждаю, что это первый раз, когда я работал с jshint/uglify и grunt.
У меня есть (для краткости) 2 тестовых файла JS:
(function() {
console.log("I'm in your build, testing your stuff (1)");
})();
а также
(function() {
console.log("I'm in your build, testing your stuff (2)");
})();
мой файл grunt выполняет ряд задач сборки, но, по сути, я запускаю jshint дважды — один раз на src (остановитесь раньше, если есть проблемы) и один раз после всех concat/uglify, чтобы убедиться, что окончательный вывод файлов все еще проходит.
jshint в исходном коде (см. выше) отлично работает, но jshint post 'build', кажется, терпит неудачу, потому что uglify удалил пару точек с запятой.
соответствующие части моего файла grunt (для ссылки):
jshint: {
jshintrc: '.jshintrc',
source: {
files: {
src: ['app/common/scripts/**/*.js',
'app/games/**/*.js'
]
}
},
dist: {
files: {
src: [ 'dist/' + targetEnvironment + '/common/scripts/**/*.js',
'dist/' + targetEnvironment + '/games/**/*.js'
]
}
}
},
concat: {
scriptsCommon: {
src: [ 'app/common/scripts/*.js',
],
dest: 'dist/' + targetEnvironment + '/common/scripts/common.concat.js',
nonull: true
}
},
uglify: {
all: {
files: [
{ src: 'dist/' + targetEnvironment + '/common/scripts/common.concat.js',
dest: 'dist/' + targetEnvironment + '/common/scripts/common.min.js' },
]
}
}
и моя задача ворчания, которая выполняется, по сути (опять же, урезанная для примера):
grunt.registerTask('default', [
'jshint:source',
'concat:scriptsCommon',
'uglify:all',
'jshint:dist'
jshint:source
работает отлично, jshint:dist
нет и жалуется на отсутствие точек с запятой.
Скрипт uglify'd (для справки):
!function(){"use strict";angular.module("TestingStuffs",[]).controller("TestController",["$http","$log",function(){}]).controller("Test2Controller",["$http","$log",function(){}])}(),function(){console.log("I'm in your build, testing your stuff (1)")}(),function(){console.log("I'm in your build, testing your stuff (2)")}();
как вы можете видеть, в обоих операторах console.log были удалены точки с запятой - кажется, безопасно. Я могу понять, почему uglify сделал это, и я также могу понять, почему jshint жалуется на это.
В идеале я хотел бы изменить uglify так, чтобы он оставлял точку с запятой (хотя я могу получить гнев от полиции с запятой за это), хотя в идеале я хотел бы увидеть варианты для обоих - заставить jshint игнорировать проблему с точкой с запятой, но также получить uglify, чтобы оставить его.
Любая помощь с благодарностью!
Привет, Терри