Что такое хороший автономный форматер JavaScript для исправления пропущенных точек с запятой? - PullRequest
4 голосов
/ 25 июня 2009

Я пытаюсь дооснастить / исправить много устаревшего веб-кода, и, к сожалению, большая часть его - плохо отформатированный JavaScript. Я ищу пакетную / скриптовую утилиту, которая может исправить JavaScript, в котором отсутствуют символы-символы в конце исполняемых операторов.

Я пробовал скрипт beautify-cl.js с Rhino, но он не добавляет точки с запятой. Кроме того, я попытался JSTidy , думая, что мог бы изменить его, чтобы он был пригоден для сценариев, но он удаляет все комментарии. Учитывая, что у нас есть что-то вроде 2000-3000 файлов, любое решение должно быть доступно для скриптов.

Были упомянуты следующие темы, однако ни одно из решений не было достаточным по разным причинам: Javascript Beautifier - Не обрабатывает точку с запятой Лучший форматировщик исходного кода для Javascript? - Не для сценариев

Есть идеи / решения? Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 27 июля 2015

Я нашел выигрышную комбинацию в js-beautify и Google Closure Linter :

# legacy.js is your poorly formatted JavaScript file, and will be modified in-place
js-beautify -s 2 -n -b end-expand -x -r legacy.js && fixjsstyle legacy.js

Объяснение js-beautify параметров:

  • -s 2: отступ с двумя пробелами
  • -n: обеспечить перевод строки в конец файла
  • -b end-expand: ставит { фигурные скобки в конце строки, но всегда дает } фигурные скобки своей собственной линии.
  • -x: unescape \xNN -экранированные символы в строках
  • -r: внести изменения на месте

fixjsstyle, который устанавливается вместе с пакетом Closure Linter, по умолчанию вносит изменения на месте.

Этот конвейер сохраняет комментарии (!), Отступает все (в основном), как мне нравится, добавляет точки с запятой, где это уместно, и даже заменяет двойные кавычки на одинарные, если это возможно. Обе команды могут получить список файлов (например, **/*.js) вместо одного.

Чтобы установить необходимые пакеты в Mac OS X:

npm install -g js-beautify
brew install closure-linter
2 голосов
/ 25 июня 2009

Очевидно, вам нужно сделать это, если вы хотите минимизировать файлы при развертывании. Отсутствие точек с запятой, вероятно, является причиной № 1, почему файлы JS не минимизируются должным образом, поэтому я понимаю вашу мотивацию.

Напишите небольшой сценарий Python (или любой другой) для запуска файла через jslint, затем используйте выходные данные из jslint, чтобы увидеть, каким строкам нужны точки с запятой, затем прокрутите источник js и добавьте их.

Я думаю, что здесь вы можете быть довольно бесстрашными, потому что JavaScript все равно неявно добавляет точки с запятой.


Обновление: Этот набор инструментов может быть тем, что вы ищете . Вкладка «формат» предлагает ввести пропущенную точку с запятой.

1 голос
/ 31 декабря 2010

Если вы используете JavaScript Utlity V2 на http://jsutility.pjoneil.net и используете функцию форматирования, она автоматически заменит пропущенные точки с запятой.

Кроме того, если вы используете функцию сжатия, она также заменит пропущенные точки с запятой, чтобы сжатие не вызывало ошибок.

0 голосов
/ 27 марта 2014

Если http://jsutility.pjoneil.net выдает слишком много ошибок (и не может его отформатировать), вы можете попробовать сжать его с помощью: http://refresh -sf.com / yui / (что добавит пропущенные точки с запятой), а затем вернитесь в форматтер pjoneil.net, чтобы получить красивый код с точками с запятой.

0 голосов
/ 25 июня 2009

Вам не стоит беспокоиться о массовом обновлении большого количества устаревшего кода с единственной целью вставки точек с запятой. Это классический случай "делать это неправильно".

Как бы вы проверили результаты? Как бы вы гарантировали, что никакая «функциональность» (как побочный эффект ошибки, вызванной отсутствием точки с запятой) не будет потеряна?

Как вы думаете, добавление точек с запятой ко всем этим файлам даст вам? Помимо файлов большего размера (я не использую точки с запятой) и огромное количество непроверенных изменений кода?

Как сказал Гамбо, используйте jslint . Я использовал бы это на файлах, поскольку Вы редактируете их в своей повседневной работе. Когда вы редактируете эти файлы, вероятно, вы будете тестировать изменения файла в это время. Это было бы самое идеальное время, чтобы сойти с ума с вставкой точки с запятой.

Кроме того, если вы заботитесь о сохранении и поддержке 2000-3000 устаревших javascript-файлов, у вас гораздо большие проблемы, чем с запятой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...