5

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

मैं sails lift के साथ ऐप शुरू करता हूं और यह डिफ़ॉल्ट पोर्ट 1337 पर चलता है।

मैंने options: {livereload:true} को अपने grunt-contrib-watch कॉन्फ़िगरेशन में जोड़ने का प्रयास किया लेकिन जहां तक ​​मुझे समझ में आता है कि मुझे किसी भी तरह से मेरे पृष्ठ में लाइवरेलोड जावास्क्रिप्ट इंजेक्ट करने की आवश्यकता है?

मैंने grunt-contrib-connect को livereload विकल्प के साथ जावास्क्रिप्ट इंजेक्ट करने के लिए उपयोग करने का प्रयास किया लेकिन ऐसा लगता है कि यह सिर्फ एक और सर्वर शुरू करता है। जब मैं प्रारंभ सर्वर (localhost:8000) पर नेविगेट करता हूं तो मुझे फ़ोल्डर संरचना दिखाई देती है। हालांकि लाइवरेलोड जावास्क्रिप्ट इंजेक्शन दिया गया है।

यदि संभव हो तो मैं लाइवरेलोड क्रोम प्लगइन से बचना चाहता हूं।

मेरे सेल ऐप में लाइवरेलोड जावास्क्रिप्ट को इंजेक्ट करने का सबसे अच्छा तरीका क्या है? या क्या मुझे ब्राउजरसिंक जैसे किसी अन्य टूल का उपयोग करना चाहिए?

धन्यवाद! :)

उत्तर

6
  1. कार्यों/config को livereload विकल्प जोड़ें/watch.js
module.exports = function(grunt) { 

    grunt.config.set('watch', { 
     api: { 

      // API files to watch: 
      files: ['api/**/*', '!**/node_modules/**'] 
     }, 
     assets: { 

      // Assets to watch: 
      files: ['assets/**/*', 'tasks/pipeline.js', '!**/node_modules/**'], 

      // When assets are changed: 
      tasks: ['syncAssets' , 'linkAssets'] 
     }, 
     // ADD THIS 
     options: { 
      livereload: true, 
     }, 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
}; 
  1. अंत में कहीं न कहीं अपने लेआउट में livereload स्क्रिप्ट जोड़ें, </body> टैग विचारों को डिफ़ॉल्ट रूप से, पहले/layout.ejs:
<script src="http://localhost:35729/livereload.js"></script> 

स्थानीय होस्ट सर्वर

के आईपी या DNS नाम का उपयोग कर सकते हैं अगर एक फ़ाइल एपीआई या संपत्ति फ़ोल्डर में परिवर्तित हो जाता है इस पृष्ठ ताज़ा होगी की सिवाय।

डिफ़ॉल्ट रूप से Ggrunt-contrib-watch पोर्ट का उपयोग करता है। आप livereload: 8000

संपादित करें: ठीक है, मैं वास्तव में नहीं जानता कि अगर यह पूरी तरह से सही है, लेकिन लगता है कि आप लेआउट सेटिंग्स ओवरराइड कर सकते हैं config/env/development.js में।

module.exports = { 
    views: { 
     layout: 'dev' 
    } 
} 

तो फिर तुम अलग लेआउट फ़ाइल views/dev.ejs जहां livereload स्क्रिप्ट और अन्य विकास पैरामीटर जोड़ सकते हैं बना सकते हैं: की तरह कुछ जोड़ें। इसके अलावा आप उसी तरह livereload कुंजी जोड़ सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। क्या आपके पास एक सुझाव भी है कि स्क्रिप्ट टैग को गतिशील रूप से इंजेक्ट कैसे करें (इसे लेआउट में जोड़ने के बजाए)? क्योंकि मैं इसे उत्पादन मोड में शामिल नहीं करना चाहता हूं। –

+0

@ फिलिप बास्केके ​​मैंने उत्तर में कुछ जानकारी जोड़ दी, परीक्षण नहीं किया कि – Bulkin

+0

आपके सुझाव दोनों काम करते हैं! :) और 'विचार/dev.ejs' के साथ, जब मैं लिल्स --prod' sails करता हूं तो livereload स्क्रिप्ट दिखाई नहीं देती है। मुझे लेआउट के डुप्लिकेशंस को पसंद नहीं है हालांकि मुझे अभी भी लगता है कि यह 'devjs' के माध्यम से 'कार्यों/config/sails-linker.js' में किसी भी तरह से संभव होना चाहिए। लेकिन ** यह काम करता है, तो बहुत बहुत धन्यवाद! :) ** –

1

कुछ समय के साथ पाल/घुरघुराना ऐसा करने की कोशिश कर हार के बाद, मैं .html, जे एस और सीएसएस और मॉडल और नियंत्रकों के लिए पैकेज (https://www.npmjs.com/package/sails-hook-autoreload) के लिए livereload ब्राउज़र प्लगइन (http://livereload.com/extensions/) स्थापित करें।

एक आकर्षण की तरह काम करता है।

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