Вопрос или проблема
Я хочу форматировать исходные файлы HTML из командной строки, по одному файлу за раз или массово.
Требования к инструменту
-
Должен быть установлен на Windows, Linux и macOS.
-
Должен уметь форматировать на месте, перезаписывая текущие файлы HTML.
-
Должен позволять устанавливать размер отступа в один пробел. 1
-
Должен просто форматировать HTML-код, а не проверять его.
-
Не должен делать ложных утверждений о HTML-коде.
-
Теги
<head>
и<body>
не должны быть с отступами. -
Максимальное количество сохраняемых разрывов строк может быть установлено в ноль.
Инструмент, который я пробовал, но отказался
Я пробовал prettier, но он ошибочно сообщил, что <form>
является самозакрывающимся тегом в HTML. 2
Это я не могу допустить, поэтому я отказался от него.
Онлайн инструмент
Онлайн форматировщик, который я нашел наиболее подходящим для моих требований, это HTML Formatter.
Ссылки
- Документация NPM пакета
prettier
- Список самозакрывающихся тегов HTML
- Пример HTML файла
- Страница загрузки Node.js
- Скриншот после запуска
prettier
- Закрывающие элементы, которые имеют предполагаемые конечные теги
- HTML Formatter – онлайн форматировщик
1
Аргументация использования одного пробела для отступов двояка.
-
Я хочу уменьшить размер файла.
-
Когда я просматриваю файл в текстовом редакторе, я хочу использовать как можно меньше горизонтального пространства.
2
Я установил Node.js, и затем глобально установил пакет prettier с помощью команды :
npm install --global prettier
Затем я скачал файл form-demo.html
– в zip-архиве, чтобы неформатированный файл мог быть легко восстановлен.
Он имеет тег <form>
с параметром action
, установленным в /search
(вместо "/search"
).
Я попытался отформатировать form-demo.html
с помощью prettier
:
prettier form-demo.html
На что prettier
ответил синтаксической ошибкой, ссылаясь на Закрывающие элементы, которые имеют предполагаемые конечные теги, но <form>
не является самозакрывающимся тегом.
Я хочу инструмент, который форматирует файлы HTML из командной строки
– Я рекомендую js-beautify
, как предложено в этом ответе.
Я предпочитаю устанавливать его глобально:
npm install --global js-beautify
Обычно я хочу форматировать все *.html
файлы в текущей папке. 1
js-beautify *.html --type html --replace --indent-size 1 --max-preserve-newlines 0
Вышеуказанное удовлетворяет все восемь требований вопроса, включая три необязательных.
Ссылки
1
Команда может быть записана короче как:
js-beautify --type html -r -s 1 -m 0 *.html
Это форматирует HTML на мой вкус.
Посмотрите Опции чтобы найти ваши любимые настройки.
Попробуйте html tidy.
Tidy – это консольное приложение для macOS, Linux, Windows, UNIX и других. Оно исправляет и очищает HTML и XML документы, исправляя ошибки разметки.
Оно имеет много опций и доступно на многих платформах и онлайн.
Установка на Windows и интеграция его вывода в редактор, такой как Textpad, была своего рода сложной задачей, но это возможно.
https://www.google.com/search?q=html+tidy
Я не уверен насчёт вашего требования «отступ 1 символ», но думаю, это можно обойти, сделав отступы табуляцией, а затем заменив табуляцию на 1 пробел.
лол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чувак
лол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чуваклол! Это так не работает, думаю, вы опубликовали на неправильной платформе, чувак`enter preformatted text here
Ответ или решение
Форматирование HTML файлов с командной строки является частой задачей среди разработчиков, особенно для поддержания читаемости кода и соответствия стандартам стиля. В этом контексте можно рассмотреть несколько инструментов, которые соответствуют всем требованиям, изложенным в описании проблемы.
Теория
Форматирование HTML подразумевает приведение кода в порядок, делая его более читабельным и организованным. Для этого обычно изменяется отступ, структура тегов и могут удаляться избыточные пробелы или пустые строки. Инструменты форматирования обладают различными возможностями и настройками, включая возможность изменения размера отступов, преобразования HTML без изменения его логической структуры или содержания, а также обработки множества файлов сразу.
Важной характеристикой, согласно вашим требованиям, является способность инструмента сохранять логику исходного HTML-кода, не пытаясь его автоматически исправлять или проверять на валидность. Это означает, что такой инструмент не должен добавлять несуществующие закрывающие теги или утверждать их присутствие.
Пример
Рассмотрим использование JavaScript библиотеки js-beautify
, которая соответствует вашим требованиям. Этот инструмент доступен через npm, что позволяет его использовать на всех популярных операционных системах: Windows, Linux и macOS. Утилита js-beautify
может выполнять форматирование файлов на месте, заменяя их содержимое отформатированным кодом, что отвечает требованию об "in-place" форматировании.
Чтобы установить js-beautify
, выполните команду:
npm install --global js-beautify
После установки вы сможете использовать следующую команду для форматирования всех HTML файлов в текущей директории с однопробельными отступами и без сохранения пустых строк:
js-beautify *.html --type html --replace --indent-size 1 --max-preserve-newlines 0
Эта команда изменяет отступы в HTML файлах на один пробел, что помогает сохранить меньший размер файлов и экономии горизонтального пространства на экране при просмотре кода.
Применение
Инструмент js-beautify
использует ряд параметров, которые позволяют настраивать форматирование HTML в соответствии с вашими предпочтениями. Например, флаг --indent-size 1
устанавливает отступ в один пробел. Это особенно полезно для тех, кто хочет сократить размер файлов или предпочитает минималистичный вид кода. Кроме того, --max-preserve-newlines 0
избавляет от лишних пустых строк, что может быть необходимо при строгих требованиях к форматированию.
Несмотря на то, что prettier
отклонен вами из-за некорректной обработки тега <form>
, js-beautify
избегает таких проблем, фокусируясь исключительно на формате, а не на валидности кода.
Кроме того, можно рассмотреть использование инструмента HTML Tidy
, который также устанавливается и работает на всех основных операционных системах и предлагает множество опций для очистки и корректировки HTML и XML документов. Хотя HTML Tidy
больше сосредоточен на исправлении ошибок разметки, он также может быть использован для простого форматирования.
Подводя итог, js-beautify
представляет собой отличный выбор для форматирования HTML файлов с командной строки благодаря своей кроссплатформенности, гибкости и возможности детальной настройки формата. Пользователи могут с легкостью интегрировать его в свои рабочие процессы, обеспечивая консистентность и легкочитаемость HTML кода без автоматической проверки или изменения его структуры.