मैं कमांड लाइन का उपयोग करके जावास्क्रिप्ट कोड को कैसे सुशोभित कर सकता हूं?


101

मैं जावास्क्रिप्ट कोड को सुशोभित करने के लिए एक बैच स्क्रिप्ट लिख रहा हूं। इसे विंडोज और लिनक्स दोनों पर काम करने की जरूरत है ।

मैं कमांड लाइन टूल का उपयोग करके जावास्क्रिप्ट कोड को कैसे सुशोभित कर सकता हूं?


मेरा प्रिटी डिफ टूल पूरी तरह से जावास्क्रिप्ट में लिखा गया है इसलिए यह सभी ऑपरेटिंग सिस्टम पर समान रूप से काम करता है। यह जावास्क्रिप्ट, सीएसएस, किसी भी मार्कअप भाषा के सौंदर्यीकरण और खनन का समर्थन करता है जो HTML सहित XML शैली के सीमांकक का उपयोग करता है। prettydiff.com/?m=beautify

जवाबों:


64

सबसे पहले, अपने पसंदीदा जावास्क्रिप्ट पर आधारित सुंदर प्रिंट / ब्यूटीफायर चुनें। मैं एक को पसंद करता हूंhttp://jsbeautifier.org/ , क्योंकि यह वही है जो मैंने पहली बार पाया था। इसकी फ़ाइल डाउनलोड करें https://github.com/beautify-web/js-beautify/blob/master/js/lib/beautify.js

दूसरा, मोज़िला समूह के जावा आधारित जावास्क्रिप्ट इंजन, राइनो को डाउनलोड और इंस्टॉल करें । "स्थापित करें" एक छोटा सा भ्रामक है; ज़िप फ़ाइल डाउनलोड करें, सबकुछ निकालें, अपने जावा क्लासपाथ (या लाइब्रेरी एक्स / ओएस एक्स पर एक्सटेंशन्स) में js.jar रखें। आप इसके बाद एक आह्वान के साथ स्क्रिप्ट चला सकते हैं

java -cp js.jar org.mozilla.javascript.tools.shell.Main name-of-script.js

एक छोटे शेल स्क्रिप्ट को लिखने के लिए चरण 1 से सुंदर प्रिंट / ब्यूटीफायर का उपयोग करें जो आपकी जावास्क्रिप्ट फ़ाइल में पढ़ेगा और चरण एक से सुंदर प्रिंट / ब्यूटीफायर के माध्यम से चलाएगा। उदाहरण के लिए

//original code    
(function() { ... js_beautify code ... }());

//new code
print(global.js_beautify(readFile(arguments[0])));

राइनो जावास्क्रिप्ट कुछ अतिरिक्त उपयोगी कार्य देता है जो जरूरी नहीं कि एक ब्राउज़र संदर्भ में समझ में आता है, लेकिन एक कंसोल संदर्भ में करें। फ़ंक्शन प्रिंट वह करता है जो आप अपेक्षा करते हैं, और एक स्ट्रिंग प्रिंट करता है। फ़ंक्शन readFile एक फ़ाइल पथ स्ट्रिंग को एक तर्क के रूप में स्वीकार करता है और उस फ़ाइल की सामग्री को लौटाता है।

आप ऊपर कुछ इस तरह आह्वान करेंगे

java -cp js.jar org.mozilla.javascript.tools.shell.Main beautify.js file-to-pp.js

आप अपनी राइनो रन स्क्रिप्ट्स में जावा और जावास्क्रिप्ट को मिक्स एंड मैच कर सकते हैं, इसलिए यदि आप थोड़ा जावा जानते हैं तो टेक्स्ट-स्ट्रीम के साथ इस रनिंग को प्राप्त करना बहुत कठिन नहीं होना चाहिए।


3
लिंक आप दे दिया है टूट गया है, यह इस एक मुझे लगता है कि होना चाहिए, jsbeautifier.org
सिनान

2
मैंने यह कैसे किया: यह सिर्फ काम करता है। Einar Lielmanis और सभी को शामिल करने के लिए धन्यवाद!
13

1
ये एक चलता हुआ लक्ष्य प्रतीत होता है। अब jsbeautifier साइट की जानकारी कहती है कि यह अजगर में लिखा है।
सेठ

cmdline उपयोगकर्ताओं के लिए अपडेट, निम्न रेपो में सुंदर प्रिंटिंग js के लिए स्टैंड अलोन कमांड लाइन टूल्स स्थापित करना आसान है: github.com/einars/js-beautify.git
drhodes

ग्रन्ट का उपयोग करके एक आधुनिक जेएस दृष्टिकोण का उपयोग करें: stackoverflow.com/questions/18985/…
Tchakabam

33

अद्यतन अप्रैल 2014 :

जब मैंने 2010 में इसका उत्तर दिया था तब से ब्यूटीफायर को फिर से लिखा गया है। अब वहां एक पायथन मॉड्यूल है, नोडज के लिए एक एनपीएम पैकेज, और जार फ़ाइल चली गई है। कृपया प्रोजेक्ट पेज github.com पर पढ़ें ।

पायथन शैली:

 $ pip install jsbeautifier

एनपीएम शैली:

 $ npm -g install js-beautify

इसके प्रयेाग के लिए:

 $ js-beautify file.js

मूल उत्तर

@Alan तूफान के जवाब में जोड़ना

http://jsbeautifier.org/ पर आधारित कमांड लाइन ब्यूटीफायर ने उपयोग करने के लिए थोड़ा आसान हो गया है, क्योंकि यह अब (वैकल्पिक रूप से) राइनो (जावा-आधारित जेएस इंजन) के बजाय वी 8 जावास्क्रिप्ट इंजन (सी ++ कोड) के आधार पर पैक किया गया है as "js.jar")। इसलिए आप राइनो के बजाय वी 8 का उपयोग कर सकते हैं।

कैसे इस्तेमाल करे:

http://github.com/einars/js-beautify/zipball/master से jsbeautifier.org ज़िप फ़ाइल डाउनलोड करें

(यह http://download.github.com/einars-js-beautify-10384df.zip जैसे ज़िप फ़ाइल से जुड़ा एक डाउनलोड URL है )

पुराना (अब काम नहीं करता है, जार फ़ाइल चली गई है)

  java -jar js.jar  name-of-script.js

नया (वैकल्पिक)

स्थापित / संकलित v8 lib svn से, v8 / README.txt को उपर्युक्त ज़िप फ़ाइल में देखें

  ./jsbeautify somefile.js

राइनो संस्करण की तुलना में थोड़ा अलग कमांड लाइन विकल्प,

-और ग्रहण में महान काम करता है जब एक "बाहरी उपकरण" के रूप में कॉन्फ़िगर किया जाता है


3
या यदि आप v8 से अधिक अजगर पसंद करते हैं, तो अब वहां भी एक अजगर मॉड्यूल है।
केटर्न

1
Npm पैकेज को js-beautify कहा जाता है
brafdlog

30

यदि आप नोडज का उपयोग कर रहे हैं तो कुरकुरा-जेएस का प्रयास करें

लिनक्स या मैक पर, यह मानते हुए कि आपके पास पहले से ही नोडज स्थापित है, आप इसके साथ कुरूप स्थापित कर सकते हैं:

sudo npm install -g uglify-js

और फिर विकल्प प्राप्त करें:

uglifyjs -h

तो अगर मेरे पास एक स्रोत फ़ाइल है foo.jsजो इस तरह दिखती है:

// foo.js -- minified
function foo(bar,baz){console.log("something something");return true;}

मैं इसे इस तरह से सुशोभित कर सकता हूं:

uglifyjs foo.js --beautify --output cutefoo.js

uglifyडिफ़ॉल्ट रूप से इंडेंटेशन के लिए रिक्त स्थान का उपयोग करता है इसलिए अगर मैं 4-स्पेस-इंडेंटेशन को टैब में बदलना चाहता हूं तो मैं इसे चला सकता हूं unexpandजिसके माध्यम से Ubuntu 12.04 आता है:

unexpand --tabs=4 cutefoo.js > cuterfoo.js

या आप यह सब एक बार में कर सकते हैं:

uglifyjs foo.js --beautify | unexpand --tabs=4 > cutestfoo.js

आप यहाँ अनएक्सप्लैन्ड के बारे में अधिक जानकारी प्राप्त कर सकते हैं

तो इस सब के बाद मैं एक ऐसी फ़ाइल के साथ हवा देता हूं जो ऐसा दिखता है:

function foo(bar, baz) {
    console.log("something something");
    return true;
}

अद्यतन 2016-06-07

ऐसा प्रतीत होता है कि क्रूसिफ़-जेएस का अनुरक्षक अब संस्करण 2 पर काम कर रहा है, हालांकि स्थापना समान है।


4
यह एक कमांड लाइन जावास्क्रिप्ट कोड ब्यूटीफायर के लिए सही उत्तर है।
bitek

uglifyjs -bकेवल इंडेंटेशन को ठीक करने से बहुत अधिक है, यह कोड को फिर से बनाता है और फिर से लिखता है, शायद दक्षता के लिए। यही तो मैं नहीं चाहता था। मैं Ubuntu 14.04 में एक पुराने संस्करण का उपयोग कर रहा था।
सैम वाटकिंस

क्या आप कृपया थोड़ा और समझा सकते हैं कि कैसे uglifyjs -bकोड को फिर से लिखना और फिर से लिखना है?
erapert


3

कंसोल में, आप आर्टिस्टिक स्टाइल (उर्फ AStyle) का उपयोग कर सकते हैं --mode=java
यह बढ़िया काम करता है और यह मुफ़्त, ओपन-सोर्स और क्रॉस-प्लेटफ़ॉर्म (लिनक्स, मैक ओएस एक्स, विंडोज) है।


2

आधुनिक जावास्क्रिप्ट तरीके का उपयोग करें:

उपयोग ग्रंट के साथ संयोजन में ग्रंट के लिए jsbeautifier प्लगइन

आप npm का उपयोग करके अपने देव वातावरण में सब कुछ आसानी से स्थापित कर सकते हैं ।

आपको केवल उपयुक्त कार्यों के साथ एक Gruntfile.js सेट करने की आवश्यकता होगी, जिसमें फ़ाइल कॉन्फैटिनेशन, लिंट, क्रॉइलिज़, मिनीइज़ आदि भी शामिल हो सकते हैं, और ग्रंट कमांड चला सकते हैं।


2

मैं स्वीकृत उत्तर के लिए एक टिप्पणी जोड़ने में सक्षम नहीं हूं, इसलिए आपको ऐसी पोस्ट दिखाई देती है जो पहले से मौजूद नहीं होनी चाहिए।

मूल रूप से मुझे एक जावा कोड में एक जावास्क्रिप्ट ब्यूटीफायर की आवश्यकता थी और मेरे आश्चर्य के लिए कोई भी उपलब्ध नहीं है जहाँ तक मुझे मिल सकता है। इसलिए मैंने खुद को पूरी तरह से स्वीकार किए गए उत्तर के आधार पर कोडित किया (यह jsbeautifier.org ब्यूटिफायर .js स्क्रिप्ट को लपेटता है, लेकिन जावा या कमांड लाइन से कॉल करने योग्य है)।

कोड https://github.com/belgampaul/JsBeautifier पर स्थित है

मैंने राइनो और ब्यूटिफायर.जे का इस्तेमाल किया

कंसोल से उपयोग: जावा -जर jsbeautifier.jar स्क्रिप्ट इंडेंटेशन

उदाहरण: जावा -जर jsbeautifier.jar "फ़ंक्शन ff () {वापसी;}" 2

जावा कोड से उपयोग: सार्वजनिक स्थैतिक स्ट्रिंग jBBeautify (स्ट्रिंग jsCode, int indentSize)

कोड बढ़ाने के लिए आपका स्वागत है। मेरे मामले में मुझे केवल इंडेंटेशन की आवश्यकता थी ताकि मैं विकसित करते समय उत्पन्न जावास्क्रिप्ट की जांच कर सकूं।

इस उम्मीद में कि यह आपके प्रोजेक्ट में कुछ समय बचाएगी।


1

मैंने 5 मिनट के भीतर जावास्क्रिप्ट में कार्यान्वित कमांड-लाइन जावास्क्रिप्ट ब्यूटिफायर का निर्माण करने का तरीका बताते हुए एक लेख लिखा है । YMMV।

  1. नवीनतम स्थिर राइनो डाउनलोड करें और इसे कहीं पर अनपैक करें, जैसे ~ / देव / जावास्क्रिप्ट / राइनो
  2. डाउनलोड beautify.js जो aforementioned jsbeautifier.org से संदर्भित है, तो इसे कहीं कॉपी करें, जैसे ~ / dev / javascript / bin / cli-beautifier.js
  3. Beautify.js के अंत में इसे जोड़ें (जावास्क्रिप्ट में कुछ अतिरिक्त शीर्ष-स्तरीय गुणों का उपयोग करके):

    // Run the beautifier on the file passed as the first argument.
    print( j23s_beautify( readFile( arguments[0] )));
  4. निम्नलिखित कोड को एक निष्पादन योग्य फ़ाइल में कॉपी-पेस्ट करें, जैसे ~ / देव / जावास्क्रिप्ट / बिन / jsbeautifier.it:

    #!/bin/sh
    java -cp ~/dev/javascript/rhino/js.jar org.mozilla.javascript.tools.shell.Main ~/dev/web/javascript/bin/cli-beautifier.js $*
  5. (ऐच्छिक) jsbeautifier.js के साथ फ़ोल्डर को PATH में जोड़ें या पहले से ही कुछ फ़ोल्डर में ले जाएँ।


1

मेरा मानना ​​है कि जब आपने कमांड लाइन टूल के बारे में पूछा था तो आप बैच में अपनी सभी जेएस फाइलों को सुशोभित करना चाहते थे।

इस मामले में Intellij IDEA (11.5 के साथ परीक्षण) ऐसा कर सकता है।

आपको बस अपनी किसी भी प्रोजेक्ट फाइल का चयन करना होगा और मुख्य आईडीई मेनू में "कोड" -> "रिफॉर्मैट कोड .." का चयन करना होगा। फिर संवाद में "डायरेक्टरी की सभी फाइलें ..." चुनें और "एंटर" दबाएं। बस सुनिश्चित करें कि आपने JVM के लिए पर्याप्त मेमोरी समर्पित की है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.