কোড পরিবর্তনতে একটি সেলস.জেএসএস অ্যাপটি স্বয়ংক্রিয়ভাবে লোড হচ্ছে?


107

বর্তমানে সেলস.জেএসএস অ্যাপ্লিকেশনটিতে যে কোনও কোড পরিবর্তনের জন্য আপনাকে ম্যানুয়ালি পাল সার্ভারটি বন্ধ sails liftকরতে হবে এবং পরিবর্তনগুলি দেখার আগে আপনি আবার চালাতে হবে ।

আমি ভাবছিলাম যে কোনও কোড পরিবর্তন সনাক্ত করে যখন সেল মোড়ক সার্ভারটি স্বয়ংক্রিয়ভাবে পুনরায় চালু করতে বিকাশ মোডে চলছে তখন কোনও উপায় আছে কিনা?

উত্তর:


74

তোমার মত প্রহরী ব্যবহার করতে হবে চিরতরে , nodemon , নাকি অন্য কিছু ...

উদাহরণ

  1. চালিয়ে চিরকালের জন্য ইনস্টল করুন :

    sudo npm install -g forever

  2. চালাও এটা:

    forever -w start app.js


অসীম পুনঃসূচনা এড়াতে সেলগুলি .tmpফোল্ডারে লেখায় , আপনি .foreverignoreআপনার প্রকল্প ডিরেক্টরিতে একটি ফাইল তৈরি করতে পারেন এবং এই সামগ্রীটি ভিতরে রাখতে পারেন:

**/.tmp/**
**/views/**
**/assets/**

গীটহাবটিতে সমস্যাটি দেখুন: /.tmp এর কারণে চিরতরে পুনঃসূচনা হচ্ছে


7
আপনি দৃশ্যগুলি যুক্ত করতে চাইবেন .foreverignoreকারণ তাদের তত্ক্ষণাত পরিবর্তনগুলি দেখার জন্য পুনরায় আরম্ভের প্রয়োজন হয় না। যেমন**/views/**
শেঠ মালাকি

তবে দুর্ভাগ্যক্রমে এগুলি আবার চালিত বুটস্ট্র্যাপ কোড এবং সেশনগুলির ক্ষতিতে পরিচালিত করবে।
rahulserver

1
আমি এটি ব্যবহার করেছি তবে আমি নিম্নলিখিত সতর্কতা পেয়েছি: --মিনটাইম সেট করা নেই। ডিফল্ট: 1000 মিমি। আমি এই পরিবর্তনশীলটি কীভাবে সেট করব?
গোলিনমার্ক

47

আপনি পাল-হুক-অটোরলোড ব্যবহার করতে পারেন

কেবল আপনার অ্যাপ্লিকেশনটিকে স্বাভাবিক হিসাবে তুলুন এবং আপনি যখন কোনও মডেল বা নিয়ন্ত্রণকারী ফাইল যুক্ত / পরিবর্তন / সরিয়ে ফেলেন, অ্যাপ্লিকেশনটিকে কম / রিফিট না করেই সমস্ত কন্ট্রোলার এবং মডেলগুলি পুনরায় লোড করা হবে।


1
এটি সবচেয়ে সহজ / সহজ সমাধান বলে মনে হচ্ছে। এনপিএম ইনস্টল করুন এবং কনফিগার ফোল্ডারে নমুনা অটোরেলোড.জেগুলি যুক্ত করুন এবং আপনি মূলত শেষ করেছেন।
ব্রিন্টাপার

1
একেবারে আশ্চর্যজনক. সবচেয়ে সহজ এবং সেলসের সবচেয়ে স্থানীয়।
অ্যালেক্সাস

তোমার দর্শন লগ করা হচ্ছে Details: Error: ER_ROW_IS_REFERENCED: Cannot delete or update a parent row: a foreign key constraint failদ্বারা নিক্ষিপ্ত 5/lib/node_modules/sails/lib/hooks/orm/index.js:221যখন আমি সংরক্ষণ করুন (পালের 11.3 ব্যবহার করে)
Gab

45

উদাহরণস্বরূপ nodemonএপিআই এবং কনফিগারেশন ডিরেক্টরিগুলি দেখতে

.nodemonignore সামগ্রী

views/*
.tmp/*
.git/*

.Nodemonignore তৈরি করার পরে কমান্ডটি চালান

$> nodemon -w api -w config

সুপারভাইজারের জন্য 3 টি ডিরেক্টরি উপেক্ষা করার উদাহরণ

$> supervisor -i .tmp,.git,views app.js

4
পাইপগুলি আউটপুটকে কীভাবে স্টাডাউট ডাব্লু / ও অতিরিক্ত কনফিগারেশনে ফিরিয়ে দেয় nodemonতার foreverসমাধানের সমাধানটি আমি পছন্দ করি nodemon। উন্নয়নের কর্মপ্রবাহকে সহজ করে তোলে।
অ্যারন র্যানসলে

কমান্ডের জন্য আমি স্রেফ আপনার .nodemonignoreউদাহরণটি ব্যবহার করেছি এবং চালাব nodemon। এটি এখন পর্যন্ত কাজ করে।
মাইকেল জে। ক্যালকিন্স

উপরের প্রবর্তনগুলি (সমতুল্য) কীভাবে চালানো হচ্ছে সে সম্পর্কে বিভ্রান্ত অন্য কারও জন্য sails lift, নোডমন ব্যবহার করতে জানেন app.js
টাইলার কলিয়ার

9

আপনি যদি সেল ০.১১ ব্যবহার করছেন, আপনি যখন মডেল বা নিয়ন্ত্রণকারীগুলি পরিবর্তন করেন তখন স্বয়ংক্রিয়ভাবে পুনরায় লোড করার জন্য আপনি এই হুকটি ইনস্টল করতে পারেন (দর্শনগুলি পুনরায় লোড করার প্রয়োজন হয় না):

npm install sails-hook-autoreload

https://www.npmjs.com/package/sails-hook-autoreload


1
এটি ইতিমধ্যে ভিটালি ম্যাসলিয়ানোকের পূর্ববর্তী উত্তর দ্বারা উল্লেখ করা হয়েছিল।
টাইলার কলিয়ার

8

nodemonবিশ্বব্যাপী বা স্থানীয়ভাবে ইনস্টল করুন ।

npm install nodemon --save
npm install nodemon -g

sailsনিম্নলিখিত হিসাবে আপনার প্রকল্পে স্থানীয়ভাবে ইনস্টল করুন

npm install sails --save

তারপরে পরিবর্তন package.json

থেকে

"scripts": {
  "debug": "node debug app.js",
  "start": "node app.js"
},

প্রতি

"scripts": {
   "debug": "node debug app.js",
   "start": "node app.js",
   "dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0"
},

তারপর

npm run dev

7

আমারও একই সমস্যা ছিল এবং আমি পাল - বিটা টাস্কের মাধ্যমে গ্রান্ট-ওয়াচ এবং গ্রান্ট-চিরকালীন ব্যবহার করে এটি সমাধান করেছি। ফলাফলটি 4 গ্রান্ট কমান্ড:

আপডেট: বর্তমান পাল সংস্করণে টাস্কগুলি উপলব্ধ (এটি আর বিটা নয়:>)

  • শুরু সার্ভার আরম্ভ করা হয়
  • সার্ভার থামায়
  • পুনঃসূচনা সার্ভার পুনরায় আরম্ভ করে
  • স্টার্টওয়াচ সার্ভারটি শুরু করে এবং এটি পুনরায় চালু করতে (গ্রান্ট-ওয়াচ ব্যবহার করে) পরিবর্তনগুলির জন্য অপেক্ষা করে। এটি সম্ভবত আপনার সমাধান, তবে অন্যান্য কমান্ডগুলিও কার্যকর।

কোডটি এখানে রয়েছে - আমি সেল @ বিটা ব্যবহার করছি, যার মধ্যে একটি কার্য ডিরেক্টরি অন্তর্ভুক্ত রয়েছে , আমি জানি না এটি পূর্ববর্তী সংস্করণগুলিতে অন্তর্ভুক্ত রয়েছে কিনা:

  • প্রথমে আপনাকে আপনার পাল ডিরেক্টরিতে সর্বদা ইনস্টল করতে হবে:

    npm install grunt-forever --save-dev
  • টাস্ক / কনফিগারেশন / সর্বদা. js চিরতরে টাস্কটি কনফিগার করুন।

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
  • টাস্ক / কনফিগারেশন / ওয়াচ জেজেস ( সম্পাদনা ) একটি নতুন নিয়ম যুক্ত করার জন্য ঘড়ির কাজ সম্পাদনা করুন

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
  • কার্য / নিবন্ধন / watchForever.js আপনার কাস্টম টাস্কগুলি নিবন্ধ করুন (এই ফাইলটি আপনি যা খুশি তাই নামকরণ করতে পারেন)

    module.exports = function(grunt) {
    // Starts server
      grunt.registerTask('start', [
        'compileAssets',
        'linkAssetsBuild',
        'clean:build',
        'copy:build',
        'forever:server:start'
      ]);
    
      // Restarts the server (if necessary) and waits for changes
      grunt.registerTask('startWatch', [
        'restart',
        'watch:server'
      ]);
    
      // Restarts server
      grunt.registerTask('restart', [
        'forever:server:restart'
      ]);
    
      // Stops server
      grunt.registerTask('stop', [
        'forever:server:stop'
     ]);
    };

এটির সাহায্যে আপনার ব্যবহার করা উচিত

    grunt startWatch

এবং আপনার সার্ভারটিকে পুনরায় আরম্ভ করার জন্য অপেক্ষা করুন:>

আশা করি এটি সাহায্য করেছে!


6

আপনি ভাল ব্যবহার করুন

npm install -g nodemon

আমি এটি ব্যবহার করছি এবং এটি আমার বিকাশের গতি উন্নত করতে সহায়তা করবে। এটির জন্য কোনও ফাইল সম্পাদনা করার দরকার নেই!

ইনস্টলেশন পরে

nodemon app.js

আপনি প্রতিটি সেভের জন্য আপনার সার্ভারটি পুনরায় চালু করতে চাইলে নোডমন ভাল। তবে আপনি যদি ওয়েব স্টর্ম বা অটো সেভ সহ কোনও আইডিয়া ব্যবহার করেন তবে এটি অবিচ্ছিন্নভাবে আপনার সার্ভারটি পুনরায় চালু করবে।
বিষ্ণু কেআর

ঠিক মিঃ বিষ্ণু কে আর।
বিনফাস কে

1

যে কেউ এখন এই প্রশ্নে আসছেন, মনে হয় এটি আর প্রয়োজন নেই - এর সাথে আরম্ভ করা একটি অ্যাপ্লিকেশনটিতে sails liftএকটি ভয়াবহ নজরদারি টাস্ক চলবে এবং কোড পরিবর্তনগুলি পুনরায় আরম্ভ না করে দৃশ্যমান হবে।

আমি প্রথমে বুঝতে পারিনি যে কনসোলে কী ঘটছে তা নির্দেশ করার মতো কিছুই নেই, তবে এটি পুনরায় আরম্ভ না করেই কাজ করবে বলে মনে হচ্ছে (আমি সেলগুলি 0.11 ব্যবহার করছি)


8
আমি মনে করি না এই যদি হয়, আমার এখনও পর আমি কোনো নিয়ামক পরিবর্তন পালের পুনরায় শুরু করতে হবে
fengd

আমার পরিবর্তনগুলি দেখতে আমার অ্যাপ্লিকেশনটি পুনরায় চালু করতে হবে।
ব্যবহারকারী 1007522
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.