2012-07-03 10 views
12

मेरी सिम्फनी 2 प्रोजेक्ट में मेरे पास कई जावास्क्रिप्ट निर्भरताएं हैं और यह अच्छा होगा कि उन्हें PHP निर्भरताओं के साथ प्रबंधित किया जाए। अभी मैं php निर्भरता के साथ deps फाइल करने के लिए उन्हें जोड़ने कर रहा हूँ और वेब निर्देशिका के लिए एक सिमलिंक बनाने के लिए, उदाहरण के लिए:symfony2 प्रोजेक्ट में जावास्क्रिप्ट विक्रेताओं को स्थापित/अपडेट कैसे करें?

//deps 
[knockout-js] 
    git=git://github.com/SteveSanderson/knockout.git 
समस्या

कि जावास्क्रिप्ट लाइब्रेरियों (उनमें से ज्यादातर) कई से संकलित करने की आवश्यकता है एक में फाइलें। तो विक्रेताओं को स्थापित/अद्यतन करने के बाद, मुझे हाथ से संकलन स्क्रिप्ट चलाने और चलाने की आवश्यकता है। जहां तक ​​मुझे पता है, बिन/विक्रेता स्क्रिप्ट प्री/पोस्ट अपडेट हुक का समर्थन नहीं करती है, जो इस समस्या को हल करेगी।

वैसे भी, आप अपनी परियोजनाओं में जावास्क्रिप्ट विक्रेताओं को अपडेट करने के लिए कैसे पहुंचते हैं?

उत्तर

8

वहाँ अधिक सजावटी तरीके हो सकता है ... लेकिन मैं सिर्फ इतना की तरह मेरे आधार टेम्पलेट में रास्तों का उपयोग करें:

{% javascripts 
    filter='yui_js' 

    '../vendor/twitter/bootstrap/js/bootstrap-tab.js' 
    '../vendor/harvesthq/chosen/coffee/lib/select-parser.coffee' 
    '../vendor/harvesthq/chosen/coffee/lib/abstract-chosen.coffee' 
    '../vendor/harvesthq/chosen/coffee/chosen.jquery.coffee' 

    '@SOTBCoreBundle/Resources/public/js/script.js' 
%} 
    <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 
+0

यह मेरे प्रश्न – Dziamid

+1

से संबंधित नहीं है? आपने पूछा कि अपनी परियोजना में विक्रेता जावास्क्रिप्ट को कैसे शामिल किया जाए। इस तरह मैं यह करता हूं ... संपत्ति कॉफ़ी और कम फाइलों के संकलन को संभालती है। – MDrollette

+1

प्रश्न जावास्क्रिप्ट विक्रेता पुस्तकालयों को स्थापित/अद्यतन करने के बारे में है। – Dziamid

5

संगीतकार जावास्क्रिप्ट के साथ-निर्भरता का प्रबंधन करने के लिए इस्तेमाल किया जा सकता है। डिफ़ॉल्ट संगीतकार द्वारा केवल एक संग्रह का उपयोग किया जाता है जिसे पैकगिस्ट कहा जाता है जो केवल PHP पुस्तकालयों के लिए एक भंडार है। हालांकि, जैसा कि here सुझाया गया है, आप जावास्क्रिप्ट (या किसी अन्य) पुस्तकालयों के लिए अपनी खुद की भंडार जोड़ सकते हैं।

{ 
    "require": { 
     "php": ">=5.3.2", 
     "symfony/symfony": ">=2.0.10,<2.1.0-dev", 
     "doctrine/orm": ">=2.1.0,<2.2.0-dev", 
     "twig/extensions": "*", 

     "symfony/assetic-bundle": "2.0.*", 
     "sensio/generator-bundle": "2.0.*", 
     "sensio/framework-extra-bundle": "2.0.*", 
     "sensio/distribution-bundle": "2.0.*", 
     "jms/security-extra-bundle": "1.0.*", 
     "knockout/knockout-js": "2.1.0" 
    }, 

    "autoload": { 
     "psr-0": { 
      "Acme": "src/" 
     } 
    }, 

    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "knockout/knockout-js", 
       "version": "2.1.0", 
       "source": { 
        "type": "git", 
        "url": "https://github.com/SteveSanderson/knockout.git", 
        "reference": "v2.1.0" 
       } 
      } 
     }, 
     { 
      "type": "package", 
      "package": { 
       "name": "knockout/knockout-js", 
       "version": "2.0.0", 
       "source": { 
        "type": "git", 
        "url": "https://github.com/SteveSanderson/knockout.git", 
        "reference": "v2.0.0" 
       } 
      } 
     } 
    ] 

} 

भंडार संकुल के होते हैं (जो स्रोत और पुस्तकालय के संस्करण का संयोजन है):

यहाँ मेरी composer.json कि एक कस्टम नॉकआउट-js भंडार कहते है। यहां मेरे पास 2 पैकेज (2.1.0, 2.0.0) हैं जिनमें पहले से ही knockout.js का पूर्व-निर्मित स्रोत है, इसलिए आपको कुछ भी संकलित करने की आवश्यकता नहीं है।

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

"knockout/knockout-js": "master" 

और निर्माण निर्देश के साथ एक के बाद चेकआउट हुक:

{ 
     "type": "package", 
     "package": { 
      "name": "knockout/knockout-js", 
      "version": "master", 
      "source": { 
       "type": "git", 
       "url": "https://github.com/SteveSanderson/knockout.git", 
       "reference": "master" 
      } 
     } 
    } 

संदर्भ इस पैकेज खंड की आवश्यकता होती है में। knockout.js के लिए यह आसान है:

// vendor/knockout/knockout-js/.git/hooks/post-checkout 

#!/bin/sh 

echo "Building knockout.js"; 
`cd build && ./build-linux`; 
2

किसी कारण से आप assetic आप सेटअप अपने deps (संगीतकार) web निर्देशिका के अंतर्गत कुछ फ़ोल्डर में जावास्क्रिप्ट विक्रेताओं लोड करने के लिए कर सकते हैं बंडल का उपयोग नहीं करना चाहते हैं।

This post वर्णन करता है कि deps फ़ाइल का उपयोग करके इसे कैसे किया जाए। और this post - संगीतकार के माध्यम से इसे कैसे करें।

संबंधित मुद्दे