숭고한 텍스트를위한 JSX 포맷터가 있습니까?


91

Sublime Text를 텍스트 편집기로 사용하고 있습니다.

javascript 파일 형식화를위한 jsFormat이 있지만 JSX 용을 찾을 수 없습니다.

JSX 포맷을 어떻게 처리합니까?


예, 거의 모든 편집기에서 사용할 수있는 jsx textmate 번들을 찾으십시오.
Brigand

내가 답하라와 종류의 것들을 수행 포맷터를 찾고 있어요, hightlighter 만 구문처럼 보인다

2
나는 하나를 모른다. react google 그룹이 더 좋은 질문이 될 것입니다.
Brigand

좋은 해결책도 찾을 수 없습니다. 현재 esprima-fb로 소스를 구문 분석하고 escodegen-jsx를 사용하여 형식화 된 출력을 생성 할 수 있습니다. 형식화 옵션이 제한되어 있고 흰색 선이 손실됩니다. escodegen-jsx는 문제 추적이없는 포크입니다. 적극적으로 유지 관리 할 것인지 확실하지 않습니다. fb가 jsx 코드 기반을 어떻게 처리하는지 궁금합니다.
user1600124

esformatter의 베타 혼란 스럽다은 아직도 생산 준비가 아직 esprima-FB를 사용하고 그 원인 JSX 포맷의 어떤 능력을 갖고있는 것 같다,하지만
지느러미

답변:


60

업데이트 4

확인 예뻐를 (즉 esformatter로 구성 할 수 있지만, 현재 몇 가지 큰 프로젝트를 포맷하는 데 사용되지, 같은 자체 반응 )

업데이트 3

숭고한 jsfmt를 확인하십시오 . esformatter-jsx 를 구성에 추가 하고 sublime-jsfmt의 forlder 내에 패키지를 설치하는 경우. Sublime에서 직접 JSX 파일을 포맷 할 수 있습니다. 여기에 대한 가이드가 있습니다.

업데이트 2

명령 줄에서 esbeautifier 를 사용할 수도 있습니다 . 형식화 할 glob 목록을 허용하는 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*

최신 정보

그래서 JSX 파일의 형식을 활성화하기 위해 esformatter 에 대한 플러그인을 수행했습니다 .

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

다음은 requirebin에 대한 라이브 데모입니다.

Sublime에서 현재 파일을 인수로 전달하여 esformatter 를 호출하는 것이 가능해야합니다 . 어떤 경우에도 명령 줄에서 사용하려면 다음 지침을 따를 수 있습니다.

명령 줄에서 다음과 같이 사용할 수 있습니다.

# 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가 proxyquire를 피하기 위해 esprima 대신 esprima-fb를 사용하는 rocambole 버전을 사용하기를 바랍니다.


1
이것은 나를 위해 esformatter-jsx-ignore에서만 작동했지만 충분합니다. 감사!
Jasper

esformatter-jsx를 사용하고 있으며 예상대로 작동합니다. 그러나 Sublime 3의 "Preferences> Package Settings> Sublime JSFMT> Settings-Default"에서 "options": { "plugins": { "esformatter-jsx"}}에 "esformatter-jsx"를 추가해야합니다. 작동
쿠마

이것은 좋은 대답입니다. 잠시 동안이 도구를 사용했지만 바벨과 함께 es6 / es7을 사용하도록 전환했으며 더 이상 작동하지 않습니다.

1
콘솔 보도 Ctrl +`당신이 esformatter-jsx REPO 또는 콘솔에서보고있는 오류와 JSFMT의 REPO에서 티켓을 열 수를 엽니 맥에, 당신의 숭고한 콘솔을 확인
로이는 riojas

2
더 예뻐요. sublime 플러그인은 github.com/jonlabelle/SublimeJsPrettier 이며 eslint 지원 github.com/prettier/prettier#eslint도 있습니다. 이 질문이 거의 3 년 만에 마침내 받아 들여 져서 다행입니다.
fin

57

HTML-CSS-JS Prettify 플러그인에는 js / jsx 파일의 xml 구문을 무시할 수있는 설정이 있습니다. 그렇게하면 jsx 코드가 엉망이되지 않습니다. 설정은 다음 "e4x": true과 같습니다. 설정 파일의 "js"섹션

기본 설정> 패키지 설정> HTML \ CSS \ JS Prettify> Prettify 기본 설정 지정

예를 들어 자체 닫는 태그가 있으면 제대로 작동하지 않습니다. />로 끝나는 태그


1
이것은 babel-sublime 및 HTML-CSS-JS Prettify의 최신 버전에서 여전히 잘 작동합니다. "jsx"또는 "allowed_file_extensions"에 사용하는 파일 확장자를 추가했는지 확인하십시오.
damd

이 답변이 구식입니까? 이 없습니다 />내 코드에서,하지만 여전히 작동하지 않습니다
앤디 다윈

2
숭고함을 위해 더 예쁘다 (일명 jsprettier)는 단연 최고입니다!! 아래 답변을 참조하십시오 : stackoverflow.com/a/42169688/2178112
majorBummer

20

Sublime 2 & 3 용 JsPrettier 패키지를 설치할 수 있습니다. 상당히 새로운 JavaScript 포맷터입니다 (작성 당시 : 2017 년 2 월). ES2017, JSX 및 Flow와 같은 대부분의 최신 개발을 지원합니다.

빠른 시작

  1. 터미널을 사용하여 전 세계적으로 더 예쁜 설치 : $ npm install -g prettier
  2. Sublime에서 도구-> 명령 팔레트 ...-> 패키지 제어 : 패키지 설치로 이동하고 JsPrettier라는 단어를 입력 한 다음 선택하여 설치를 완료합니다.
  3. 편집기 내 컨텍스트 메뉴를 사용하여 파일 형식을 지정하거나 키보드 단축키에 바인딩합니다. { "keys": ["super+b"], "command": "js_prettier" }

연결:


1
이것은 지금까지 가장 좋은 대답입니다! 더 예뻐요 폭탄!
majorBummer

1
예, 실제로 이것은 나에게도 완벽하게 작동했습니다. 주목해야 할 가장 중요한 것은 "전역 적으로"부분입니다.
Ionut Necula

19

@Shoobah가 말한 내용을 추가하려면 :

HTML-CSS-JS Prettify 플러그인에는 js / jsx 파일의 xml 구문을 무시할 수있는 설정이 있습니다. 그렇게하면 jsx 코드가 엉망이되지 않습니다. 설정 : "e4x": 설정 파일의 "js"섹션에서 true

이동 : 기본 설정> 패키지 설정> HTML \ CSS \ JS Prettify> Prettify 기본 설정 지정

"js"섹션으로 이동 :

"allowed_file_extension"에 "jsx"를 추가 한 다음 "e4x"를 "true"로 변경합니다.


16

인터넷에서 항상 'e4x'를 true로 설정한다고 말했지만 때로는 'format_on_save_extensions'옵션을 설정 한 다음 배열에 'jsx'를 추가해야합니다.

jsFormat.sublime-settings 수정

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

나는 당신이 말한대로했지만 그것은 나를 위해 작동하지 않았습니다. :(
야쉬 Vekaria

"jsFormat.sublime-settings" 는 어디에 있습니까 ? 수정할 수 있도록 "format_on_save_extensions": ["js", "json", "jsx"]. 내가 찾은 가장 가까운 파일 확장자는 다음과 같습니다."js": { "allowed_file_extensions": ["js", "json",...]
Chris22

환경 설정> 패키지 설정> jsFormat> 설정-사용자에서 찾을 수 있습니다. 그래도 나를 위해 작동하지 않았지만 여전히 JSX를 이상하게 들여 쓰기 :(
Niclas

해결책을 찾고 있었고 이것이 내 문제를 해결했습니다. 감사합니다!
Al-Maamari Tareq

4

Sublime의 패키지 설치 프로그램을 사용하여 Babel을 설치 합니다. 그때:

  1. .jsx 파일을 엽니 다.
  2. 메뉴에서보기를 선택하고
  3. 그런 다음 Syntax-> Open all with current extension as ...-> Babel-> JavaScript (Babel).

사용할 수있는 JSX 언어 패키지도 있습니다
TabsNotSpaces

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.