2015-01-05 14 views
5

के बाद सापेक्ष संपत्तियों के संदर्भ को बनाए रखना मुझे पता है कि एल 5 और एलिक्सीर अभी भी विकास में हैं, लेकिन मैं अपने कोड को पुनर्गठित करने के तरीकों के बारे में सोचने के लिए उत्साहित हूं। मुझे लगता है कि एल 5 और एलिक्सीर के संदर्भ में, मेरे प्रश्न को संपत्ति प्रबंधन के साथ और अधिक करना है।संपत्ति प्रबंधन - संगतता और संस्करण

यह स्पष्ट करना चाहते हैं कि कैसे संगतता और संस्करण को संभाला जाना चाहिए (मेरे मामले में मैं एलिक्सीर के styles() और version() का उपयोग कर रहा हूं)। मेरे पास जो मुद्दा है वह यह है कि कॉन्सट/संस्करण के बाद नई फ़ाइल एक नए फ़ोल्डर में स्थित होगी, मूल सीएसएस या जेएस फाइलों से संपत्तियों के किसी संदर्भ को तोड़ देगी।

उदाहरण के लिए, एक मूल सीएसएस फ़ाइल जिसमें background-image: url('../img.png') है, अब काम नहीं करेगा। मैं चीजों की एक जोड़ी की कोशिश की है, लेकिन दोनों विशेष रूप से विक्रेता प्लगइन्स के मामले में आदर्श नहीं हैं: एक-एक करके अधिक

  1. ले जाएँ सभी आवश्यक संपत्तियां (mix.copy() का उपयोग कर संपत्ति के प्रत्येक फ़ोल्डर के लिए) , नए निर्माण पथ (यानी इलीक्सिर के संस्करण द्वारा उपयोग किए जाने वाले निर्माण पथ) के लिए।
  2. मैन्युअल प्रत्येक संपत्ति फ़ाइल में रास्तों को संपादित एक निरपेक्ष पथ

का उल्लेख करने हालांकि इन विकल्पों में से दोनों चीजें काम कर देगा, मुझे लगता है जैसे कि मैं कुछ कमी हो सकती है। जावास्क्रिप्ट प्लगइन्स के साथ काम करते समय यह काफी अव्यवहारिक हो जाता है (उदा। वे जो अपनी छवियों, फोंट, स्टाइलशीट आदि के साथ आते हैं)।

क्या समेकन और संस्करण के दौरान सापेक्ष पथों का प्रबंधन करने का एक और अधिक व्यावहारिक तरीका है?

+0

ही यहाँ भावना ... मैं सबसे अच्छा तरीका यह संभाल करने के बारे में यकीन नहीं है ... – Chuck

उत्तर

0

संपादित करें:

मैं सिर्फ एक pull request अमृत को प्रस्तुत करें, ताकि आप केवल कर सकते हैं:

mix.version(
    ['css/style.css', 'css/vendor/style.css'], //files to be versioned 
    ['fonts', 'css/vendor/icons'] //dependent files/dirs to be copied 
); 

पुराने उत्तर:

वास्तव में, यदि आप का उपयोग करें mix.copy(...) अकेले, आप बस gulp watch का उपयोग नहीं कर सकते हैं और आप इस काम को पाने के लिए अपने पूरे ढेर को फिर से तैयार करने की आवश्यकता है।

आप नीचे दिए गए समाधान के साथ एक ही परिणाम प्राप्त कर सकते हैं और जब आप एक वर्सन फाइल बदलने के लिए, सब कुछ पुन: संयोजित करने के लिए है क्योंकि यह सिर्फ काम करेंगे की जरूरत नहीं है:

var shell = require('gulp-shell'); 

gulp.task('cp', shell.task(['cp -R public/fonts public/build/', 
          'cp -R path/to/vendor/dir public/build/vendor/', 
          '... etc ...'])); 

elixir(function(mix) { 

    ... 

    //register a watcher to run 'cp' when you rebuild 
    mix.task('cp','public/build/**/*.(js|css)'); 

} 
+0

उल्लेख खींचने का अनुरोध कभी भी विलय नहीं किया गया था, जहां तक ​​मैं देख सकता था, इसलिए मिश्रित का उपयोग करना चाहिए अगर कोई लारवेल एलिक्सीर (मिक्स) का उपयोग कर फाइलों की प्रतिलिपि बनाना चाहता है - नीचे दिए गए उत्तरों देखें। –

0

वे सापेक्ष पथ हैं - इसलिए रिश्तेदार संबंध रखें।

बस gulp आदेश के भाग के रूप public/build/ निर्देशिका के लिए खत्म छवियों ले जाते हैं, visioning के बाद।

+0

मुझे लगता है कि मैं बिंदु 1. IE में "मैन्युअल" द्वारा क्या मतलब है। मैं वर्तमान में अपने संसाधनों से सार्वजनिक/निर्माण में प्रत्येक फ़ोल्डर की प्रतिलिपि बनाने के लिए mix.copy() चला रहा हूं। आश्चर्य है कि क्या कोई बेहतर समाधान है? – mistermat

+0

दुर्भाग्यवश संस्करण कार्य संस्करण के अलावा फ़ोल्डर्स को हटा देता है ...:/ –

+0

@ करोलफिटर्सकी यही कारण है कि हम इसे gulpfile.js में gulp कमांड के हिस्से के रूप में कॉपी करते हैं, मैन्युअल रूप से उन्हें कॉपी करने के बजाय। –

1

यहाँ Laravel अमृत के लिए समाधान है संस्करण के निर्माण के बाद। कॉपी कमांड के लिए आपको इसे पूर्ण पथ के रूप में संदर्भित करने की आवश्यकता है।

var elixir = require('laravel-elixir'); 

/* 
|-------------------------------------------------------------------------- 
| Elixir Asset Management 
|-------------------------------------------------------------------------- 
| 
| Elixir provides a clean, fluent API for defining some basic Gulp tasks 
| for your Laravel application. By default, we are compiling the Less 
| file for our application, as well as publishing vendor resources. 
| 
*/ 

elixir(function(mix) { 
    mix.version('themes/default/assets/css/styles.css') 
     .copy('public/themes/default/assets/img/', 'public/build/themes/default/assets/img/'); 
}); 
संबंधित मुद्दे