Есть много вариантов, которые вы можете использовать.От простых, таких как grunt-replace
до более продвинутых, таких как grunt-processhtml
.Я опишу первый, так как это хороший вариант для простых задач и требует простой конфигурации.
Использование grunt-replace
grunt-replace
будет искать простойопределения переменных, такие как @@foo
в исходных файлах, и замените эти переменные на предоставленное вами значение или возвращаемое значение из обратного вызова.
Сначала установите плагин, используя npm install grunt-replace --save-dev
Затем настройтеЗадача выглядит следующим образом:
replace: {
dist: {
options: {
patterns: [
{
match: 'gmaps',
replacement: function() {
var googleMapsUrl;
if(process.env.NODE_ENV === 'development') {
googleMapsUrl = '//maps.googleaps.com/maps/api/js?v=3.exp&libraries=visualization';
} else {
googleMapsUrl = '//maps.googleaps.com/maps/api/js?key=' + process.env.GOOGLE_MAPS_API_KEY + 'v=3.exp&libraries=visualization';
}
return googleMapsUrl;
}
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['path/to/your/source/file.html'], dest: 'destination/folder/'
}
]
}
}
Загрузите плагин, используя grunt.loadNpmTasks('grunt-replace')
, а затем добавьте его в процесс сборки.
В исходных файлах просто добавьте определенную переменную в качестве источника сценария:
<script src="@@gmaps"></script>
Задача заменит @@gmaps
на возвращаемое значение из заданного обратного вызова.
Надеюсь, это поможет.
Подробнее о плагине можно узнать здесь.