Ваше требование может быть выполнено, однако вместо этого вам нужно будет изменить порядок ваших задач на следующий:
a.js, b.js, c.js
-->
concat -->
bundle.js
-->
uglify -->
bundle.min.js
Примечание. Порядок задач был изменен на объединение отдельных .js
файлов перед удалением результирующего вывода.
Почему необходимо менять порядок задач?
Поскольку grunt-contrib-uglify предоставляет _ 9_, а параметр grunt-contrib-concat просто не работает. Кроме того, это типичная практика объединять файлы перед их удалением.
Опция sourceMapIn
описывается следующим образом:
sourceMapIn
Тип: String Function
По умолчанию: undefined
Расположение исходной карты входных данных из более ранней компиляции, например из CoffeeScript. Если функция предоставлена, источник uglify передается в качестве аргумента, а возвращаемое значение будет использоваться как имя sourceMap. Это имеет смысл только тогда, когда есть один исходный файл.
Gruntfile.js
Ваш Gruntfile.js
можно настроить примерно так:
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.initConfig({
concat: {
options: {
// ...
sourceMap: true,
sourceMapName: 'dist/js/bundle.map' // Specify path/name for sourceMap
},
my_target: {
src: ['src/js/a.js', 'src/js/b.js', 'src/js/c.js'],
dest: 'dist/js/bundle.js',
},
},
uglify: {
options: {
// ...
sourceMap: {
includeSources: true
},
sourceMapIn: 'dist/js/bundle.map', // Specify the same path/name as
// the `sourceMapName` value
// in the `concat` task
},
my_target: {
files: {
'dist/js/bundle.min.js': ['dist/js/bundle.js']
}
}
}
});
// Note we run the `concat` task before the `uglify` task.
grunt.registerTask('default', ['concat:my_target', 'uglify:my_target']);
};
Примечания:
Значение пути, указанное для concat.options.sourceMapName
и uglify.options.sourceMapIn
, должно быть одинаковым, например dist/js/bundle.map
.
Задача concat
должна выполняться перед задачей uglify
.
Пути src
и dest
для обеих задач необходимо будет определить в соответствии с требованиями вашего проекта.
person
RobC
schedule
18.04.2018