2014-12-19 3 views
78

Я использую Sublime Text как текстовый редактор.Есть ли форматировщик JSX для возвышенного текста?

Существует jsFormat для форматирования файлов javascript, но я не могу найти его для JSX.

Как вы, ребята, имеете дело с форматированием JSX?

+0

Да, обратите внимание на jsx textmate bundle, который можно использовать практически в любом редакторе. – FakeRainBrigand

+0

похоже только на синтаксис hightlighter, я ищу форматтера, который делает идентификатор и вид вещей. – fin

+2

Я не знаю ни одного. Реактивная группа google будет лучше спросить. – FakeRainBrigand

ответ

45

Update 4

Проверить prettier, не то, что можно сконфигурировать как esformatter, но в настоящее время используется для форматирования несколько крупных проектов (like React itself)

Update 3

Проверить sublime jsfmt. Если вы добавите esformatter-jsx в конфигурацию и установите пакет внутри forlder для sublime-jsfmt. Вы сможете форматировать файлы JSX непосредственно из Sublime. Here is a guide for that

Update 2

из командной строки вы также можете использовать esbeautifier. Это обертка вокруг esformatter, которые принимают список комков форматировать

# install the dependencies globally 
npm i -g esbeautifier 

# beautify the files under src/ and specs/ both .js and .jsx 
esbeautifier src/**/*.js* specs/**/*.js* 

Update

Так что я в конечном итоге делаю плагин для esformatter, чтобы включить форматирование JSX файлы:

https://www.npmjs.com/package/esformatter-jsx

live demo on requirebin

Должно быть как-то возможно позвонить esformatter из Sublime, передавая текущий файл в качестве аргумента. В любом случае, чтобы использовать его из командной строки, вы можете выполнить следующие инструкции:

Из командной строки может быть использована, как это:

# install the dependencies globally 
npm i -g esformatter esformatter-jsx 

# call it (this will print to stdout) 
esformatter --plugins=esformatter-jsx ./path/to/your/file 

# to actually modify the file 
esformatter --plugins=esformatter-jsx ./path/to/your/file > ./path/to/your/file 

# to specify a config file (where you can also specify the plugins) 
# check esformatter for more info about the configuration options 
esformatter -c ./path/to/.esformatter ./path/to/your/file > ./path/to/your/file 

==== старого ответ ниже ===

так что, если что вы ищете просто сделать ваши файлы JSX быть отформатированы, позволяя синтаксис jsx (в основном украсьте весь яваскрипт синтаксис и игнорировать jsx тегов, то есть оставить их как есть), это то, что я м, используя esformatter

// needed for grunt.file.expand 
var grunt = require('grunt'); 

// use it with care, I haven't check if there 
// isn't any side effect from using proxyquire to 
// inject esprima-fb into the esformatter 
// but this type of dependency replacement 
// seems to be very fragile... if rocambole deps change 
// this will certainly break, same is true for esformatter 
// use it with care 
var proxyquire = require('proxyquire'); 
var rocambole = proxyquire('rocambole', { 
    'esprima': require('esprima-fb') 
}); 

var esformatter = proxyquire('esformatter', { 
    rocambole: rocambole 
}); 

// path to your esformatter configuration 
var cfg = grunt.file.readJSON('./esformatter.json'); 

// expand the files from the glob 
var files = grunt.file.expand('./js/**/*.jsx'); 

// do the actual formatting 
files.forEach(function (fIn) { 
    console.log('formatting', fIn); 
    var output = esformatter.format(grunt.file.read(fIn), cfg); 
    grunt.file.write(fIn, output); 
}); 

Мне бы очень хотелось, чтобы esformatter использовал версию rocambole, которая использует esprima-fb вместо esprima, чтобы избежать использования proxyquire.

+1

Это только работало с esformatter-jsx-ignore для меня, но это достаточно хорошо. Благодаря! – Jasper

+0

Я использую esformatter-jsx и работает так, как я ожидал. Тем не менее, мне также пришлось добавить «esformatter-jsx» в «options»: {«plugins»: {"esformatter-jsx"}} в разделе «Настройки> Настройки пакета> Sublime JSFMT> Настройки - По умолчанию» в Sublime 3, чтобы сделать это works – Kuma

+0

Это отличный ответ. У меня этот инструмент используется некоторое время, но мы перешли на использование es6/es7 с babel, и он больше не работает. – Mintberry

57

В плагине HTML-CSS-JS Prettify есть параметр, позволяющий игнорировать синтаксис xml в файле js/jsx. Таким образом, это не испортит код jsx. Установка является: "e4x": true в разделе «Js» из файла настроек

Настройки> Пакет Настройки> HTML \ CSS \ JS приукрасить> Set приукрасить Preferences

Это не работает хорошо, если у вас есть закрывающиеся теги например. теги, оканчивающиеся на />

+0

Это сделало трюк! Спасибо! –

+1

Это по-прежнему отлично работает с последними версиями babel-возвышенного и HTML-CSS-JS Prettify. Просто убедитесь, что вы добавили «jsx» или другое расширение файла, которое вы используете для «allowed_file_extensions». – damd

+0

Является ли этот ответ устаревшим? В моем коде нет '/>', но он все еще не работает. –

18

Чтобы добавить к тому, что сказал @Shoobah:

Существует установка в плагин HTML-CSS-JS приукрасить, что позволяет игнорировать xml в файле js/jsx. Таким образом, он не испортил код jsx . Установка: "e4x": правда, в разделе "Js" из файла настроек

Перейти к: Настройки> Пакет Настройки> HTML \ CSS \ JS приукрасить> Set приукрасить Предпочтения

Go в разделе «Js»:

Добавить «JSX» в «allowed_file_extension», а затем изменить «ex4» к «истинным»

15

ответ в Интернете, который всегда говорил вам установить «e4x» в true, , но иногда, мы должны установить опцию «format_on_save_extensions», затем добавить «JSX» в массиве

изменить jsFormat.sublime-настройки

{ 
    "e4x": true, 
    "format_on_save": true, 
    "format_on_save_extensions": ["js", "json", "jsx"] 
} 
+0

Я сделал, как сказал вам, но это не сработало для меня. :( –

+0

Это работало для меня как шарм – kachar

+0

Где _ "jsFormat.sublime-settings" _ found? Так что я могу изменить '' format_on_save_extensions ": [" js "," json "," jsx "]'. ближайший я обнаружил, что расширение файла: '' js ": { " allowed_file_extensions ": [" js "," json ", ...]' – Chris22

3

Использование пакета установщика возвышенное, установите Babel. Затем:

  1. Открыть файл .jsx.
  2. Выберите вид из меню,
  3. Затем синтаксис -> Открыть все с текущим расширением, ... -> Вавилон -> JavaScript (Babel).
15

Вы можете установить пакет JsPrettier для Sublime 2 & 3. Это довольно новый JavaScript форматировщик (на момент написания этого: Feb-2017). Он поддерживает большинство последних разработок, таких как ES2017, JSX и Flow.

Quickstart

  1. Установить похорошела глобально с помощью терминала: $ npm install -g prettier
  2. В Sublime перейти к Tools -> Command Palette ... -> Control Пакет: Установить пакет, введите слово JsPrettier, а затем выберите его завершите установку.
  3. Форматирование файла с помощью контекстного меню в редакторе или связать его с помощью сочетания клавиш: { "keys": ["super+b"], "command": "js_prettier" }

Ссылки:

+1

Это, безусловно, лучший ответ сейчас! Приятно это да бомба! – majorBummer

+1

Да, действительно , это тоже сработало для меня тоже. Самое главное отметить «глобально» часть. – Ionut