2015-11-02 9 views
6

मैं इतनी तरह मेरे node_modules निर्देशिका से मेरी स्थिर सीएसएस फ़ाइलों (उदा, बूटस्ट्रैप) लोड करने के लिए, चाहते हैं:एनपीएम और Django का उपयोग कर सीएसएस staticfiles लोड करने का सही तरीका क्या है?

{% load staticfiles %} 
<link rel="stylesheet" href="{% static 'bootstrap/dist/css/bootstrap.min.css' %}" /> 

जब मैं अपने STATICFILES_DIRS सेटिंग में .../node_modules/ शब्दों में कहें, यह काम करता है। हालांकि, यह मेरे /static/ फ़ोल्डर में फ़ाइलों की एक बड़ी संख्या में भी बड़ी संख्या में जोड़ता है - अधिकतर devDependencies कि मुझे फ्रंटेंड पर पहुंच की आवश्यकता नहीं है।

एनपीएम के माध्यम से कुछ स्थैतिक संपत्तियों को शामिल करने के लिए सबसे अच्छा अभ्यास क्या है, लेकिन node_modules से /static/ फ़ोल्डर में सब कुछ शामिल नहीं है?

या, क्या यह कई बाहरी फाइलों को शामिल करना ठीक है और यह सबसे अच्छा समाधान है?

उत्तर

0

मैं क्या, वह इस प्रकार है

STATICFILES_DIRS = (
    os.path.join(DJANGO_PROJECT_DIR, 'static'), 
    os.path.join(ROOT_DIR, 'node_modules', 'd3', 'build'), 
    os.path.join(ROOT_DIR, 'node_modules', 'c3'), 
) 

यह मेरा स्थिर फ़ोल्डर में केवल आवश्यक फ़ाइलें स्थापित करेंगे।

+0

धन्यवाद - तो आप यहां फ़ाइल पथ जोड़ सकते हैं। मैं इस बात की अपेक्षा करता था कि 'ओएसईआररर: [एरर्नो 20] [स्टोरेज की' listdir' विधि] में कोई निर्देशिका नहीं है [https://github.com/django/django/blob/967be82443b5640d61608a89897d8ce2bc44fa54/django/core/files /storage.py#L397)। आपकी 'STATICFILES_STORAGE' सेटिंग क्या है? आप इन्हें अपने टेम्पलेट में कैसे जोड़ते हैं? – YPCrumble

+0

क्षमा करें मैंने वास्तव में एक गलती की है। मैं जवाब में सुधार करूंगा। मुझे – Jostcrow

+0

फ़ाइलों को लोड नहीं करना चाहिए - लेकिन फिर आपको अपने टेम्पलेट में प्रत्येक फ़ाइल के लिए एक अलग पंक्ति की भी आवश्यकता है? जहां तक ​​मुझे पता है – YPCrumble

0

मुझे व्यक्तिगत रूप से लगता है कि इन असाधारण देव फ़ाइलों को node_modules में रहना ठीक है (और STATIC_ROOT में डुप्लीकेट)। आपका माइलेज भिन्न हो सकता है यदि आपका नोड_मोड्यूल फ़ोल्डर विशाल है, लेकिन आकार को दोगुना करना आम तौर पर मेरे उपयोग के मामलों के लिए एक बड़ा सौदा नहीं है, और प्रत्येक मॉड्यूल को STATICFILES_DIRS में सूचीबद्ध करने के लिए सुविधाजनक नहीं है क्योंकि मैं उन्हें इंस्टॉल करता हूं।

STATICFILES_DIRS = (
    ... 
    os.path.join(BASE_DIR, 'node_modules'), 
    ... 
) 
फिर अपने टेम्पलेट्स में

, कार्य करें:

<script src='{% static 'bootstrap/dist/css/bootstrap.min.css' %}'></script> 

फ़ोल्डर कभी हाथ से बाहर निकलना था, तो आकार के लिहाज से, आप संघर्ष का सामना करना शुरू कर दिया है, या अगर वहाँ एक पुस्तकालय तुम सच में नहीं था था ' टी जॉस्टक्रो का जवाब देना चाहते हैं (या एक कस्टम staticfiles खोजक लिखना) समझ में आ सकता है।

इसके अलावा, सबकुछ एक साथ बंडल करने की कोशिश करने के लायक हो सकता है। यदि आपकी सारी चीज़ें बंडल जेएस/सीएसएस फाइलों में रहती हैं, तो पूरी समस्या केवल उन फ़ाइलों को वेबपैक द्वारा हल की जाती है जो आपकी पसंद के ऐप में होती हैं।

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