Да, с помощью Gulp.js и BrowserSync можно убрать расширение страниц в URL.
BrowserSync — это инструмент для разработки веб-приложений, который предоставляет функцию автоматической перезагрузки страницы в браузере при внесении изменений в исходный код. Он также позволяет синхронизировать просмотр веб-страниц на разных устройствах и браузерах одновременно.
Чтобы убрать расширение страниц в URL, необходимо настроить BrowserSync с помощью опций прокси и middleware.
Ниже приведен пример настройки Gulp.js с использованием BrowserSync для удаления расширения .html из URL:
const gulp = require('gulp'); const browserSync = require('browser-sync').create(); const urlRewrite = require('gulp-url-rewrite'); // Задача для удаления расширения .html из URL gulp.task('removeExtension', function() { return gulp.src('./dist/**/*.html') .pipe(urlRewrite({ ext: '.html', callback: function(url) { return url.slice(0, -5); // удаляем последние 5 символов (.html) } })) .pipe(gulp.dest('./dist')); }); // Задача для запуска BrowserSync gulp.task('browserSync', function() { browserSync.init({ server: { baseDir: './dist' }, middleware: [ require('connect-history-api-fallback')() ] }); }); // Задача для отслеживания изменений в исходных файлах gulp.task('watch', function() { gulp.watch('./src/**/*.html', gulp.series('removeExtension')); gulp.watch('./dist/**/*.html').on('change', browserSync.reload); }); // Задача по умолчанию gulp.task('default', gulp.parallel('removeExtension', 'watch', 'browserSync'));
В данном примере создается задача removeExtension
, которая с помощью плагина gulp-url-rewrite
удаляет расширение .html из URL. Затем запускается задача browserSync
, которая настраивает сервер BrowserSync на каталог ./dist
. Задача watch
отслеживает изменения в исходных файлах и перезапускает BrowserSync при их изменении.
После выполнения команды gulp
в командной строке, BrowserSync будет запущен на локальном сервере по адресу http://localhost:3000
(адрес может отличаться в зависимости от настроек). При открытии веб-страницы, расширение .html будет автоматически удалено из URL.
Важно отметить, что для правильной работы данной настройки, необходимо чтобы ваш сервер был настроен так, чтобы при запросе без расширения .html он все равно возвращал соответствующую веб-страницу. Также нужно учитывать, что удаление расширения может привести к конфликтам при обращении к файлам с одинаковыми именами (например, файлы index.html
и index.css
).