Sunday, 15 April 2012

node.js - Obfuscate RequireJS module name -


यह प्रश्न एक सटीक डुप्लिकेट है: < / P>

  • 1 उत्तर

मेरा प्रोजेक्ट लेआउट है: < / P>

  -bin \ -out.closeure.js // (क्लोज़र कंपाइलर का उपयोग करते हुए out.js से संकलित) -out.js // यह requirejs आउटपुट फाइल है, कोई मिनेशन नहीं किया गया है) -आरआरसी \ -lib \ -library.js -main.js -somefile.js  

अब जब मैं एक परियोजना के लिए अपनी परियोजना को संयोजित करने के लिए RequireJS का उपयोग करता हूं, तो वहां के नामों को उलझाना कोई रास्ता नहीं है मॉड्यूल? उदाहरण के लिए main.js में:

  की आवश्यकता है (['somefile'], फ़ंक्शन (कुछफ़ाइल) {// blah});  

मुझे

  की आवश्यकता होगी (['a6fa7'], फ़ंक्शन (कुछफ़ाइल) {// blah});  

चूंकि मैं सब कुछ नष्ट करने के लिए क्लोज़र कम्पाइलर का उपयोग कर रहा हूं, केवल एक ही चीज का मिलान नहीं किया जा रहा है वह मॉड्यूल का नाम है, और मैं उसको भी जोड़ना चाहता हूं।

मैंने देखा प्लगइन पर, लेकिन यह काम नहीं कर रहा है और मुझे यकीन नहीं है कि अगर वह प्लग-इन करता है जो मैं चाहता हूं।

1 संपादित करें: मैं इसके बजाय उपयोग करने के लिए प्रोत्साहित करता हूं, किसी अनुकूलित बिल्ड पर पदचिह्न का उत्पादन करने के लिए कोई कारण नहीं हो सकता है। यदि आप इसे रखना चाहते हैं, तो निम्नलिखित तरीके से मैंने किया गया उपाय है: onBuildWrite और onBuildRead दस्तावेज़ीकरण के रूप में उपयोग करें: onBuildWrite एक फ़ंक्शन जिसे प्रत्येक मॉड्यूल के अनुकूलित बंडल में लिखने के लिए कहा जाएगा इससे पहले सीरियलाइजेशन से पहले सामग्री को बदल दिया जा सकता है।

  "replaceModuleNames": [], // प्रत्येक फाइल पर निष्पादित किया गया हैबिल्ल्ड रीड: फ़ंक्शन (मॉड्यूलनैम, पथ, सामग्री) {यह ["बदलेंमॉड्यूलनाम"] । पुश ({"name": moduleName, "के साथ": मेडिट ()}); // हमेशा एक मान वापस। वापसी सामग्री; }, OnBuildWrite: फ़ंक्शन (मॉड्यूल-नाम, पथ, सामग्री) {console.log ("मॉड्यूलन्यूम:" + मॉड्यूलन्यूम + ", पथ:" + पथ + ", सामग्री: ..."); Var text = सामग्री; RegExp.escape = function (text) {return text.replace (/[-[\]{}()**************************************) "; }; यह ["मॉड्यूल नामों की जगह"]। प्रत्येक (फ़ंक्शन (एलीमेंट) {var regE = नया रेगएक्स ('(?: परिभाषित करें \\ (| require \\)। * (?: "| \') ('+ RegExp.escape (तत्व ["नाम"]) '' (?: "| \ ')' ';; text = text.replace (regE, फ़ंक्शन (a, b) {वापस a.replace (b, element [" के साथ "] ););); Console.log ("moduleName:" + moduleName + "replacewith:" + element [""] + "के साथ परिणाम:" + text);}); // हमेशा एक मान वापस लौटाएंगे;} पाठ < / Code> 

इसे build.js पर रखें, आपको मेडीड विधि को कार्यान्वित करना होगा, मैंने इसे परीक्षण किया है लेकिन यह असफल हो सकता है, इसलिए उत्पादन के लिए इसके लिए भरोसा मत करो

संपादन 2: text.replace (element ["name"], element [""] "]; असंगत कोड का कारण हो सकता है, regexp समूहों के साथ प्रतिस्थापित किया जा सकता है, इसलिए मुझे regex के साथ अनुभव नहीं हुआ है सुधार के लिए खुला।


No comments:

Post a Comment