Kod değişikliklerinde bir Sails.js uygulamasını otomatik olarak yeniden mi yüklüyorsunuz?


107

Şu anda bir sails.js uygulamasındaki herhangi bir kod değişikliği sails liftiçin, değişiklikleri görmeden önce yelken sunucusunu manuel olarak durdurmanız ve tekrar çalıştırmanız gerektiği görülüyor .

Geliştirme modunda çalışırken, bir kod değişikliği algıladığında yelken sunucusunu otomatik olarak yeniden başlatmanın bir yolu olup olmadığını merak ediyordum.

Yanıtlar:


74

Sonsuza kadar bir izleyici , nodemon veya başka bir şey kullanmalısın ...

Misal

  1. Çalıştırarak sonsuza kadar yükleyin :

    sudo npm install -g forever

  2. Çalıştırın:

    forever -w start app.js


Sails .tmpklasöre yazdığı için sonsuz yeniden başlatmayı önlemek .foreverignoreiçin, proje dizininizde bir dosya oluşturabilir ve bu içeriği içine koyabilirsiniz:

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

GitHub'daki soruna bakın: /.tmp nedeniyle sonsuza kadar yeniden başlatılıyor .


7
.foreverignoreDeğişiklikleri hemen görmek için yeniden başlatmaya ihtiyaç duymadıkları için görünümler de eklemek isteyebilirsiniz . örn**/views/**
Seth Malaki

ancak ne yazık ki bunlar önyükleme kodunun yeniden çalıştırılmasına ve oturum kaybına neden olacaktır.
rahulserver

1
Bunu kullandım ama şu uyarıyı alıyorum: --minUptime ayarlanmadı. Varsayılan olarak: 1000ms. Bu değişkeni nasıl ayarlarım?
Golinmarq

47

Sen kullanabilirsiniz yelkenler-kanca Autoreload

Uygulamanızı normal şekilde kaldırın ve bir model veya kontrolör dosyası eklediğinizde / değiştirdiğinizde / kaldırdığınızda, tüm kontrolörler ve modeller, uygulamayı indirmeye / yeniden kaldırmaya gerek kalmadan yeniden yüklenecektir.


1
Bu, en basit / en kolay çözüm gibi görünüyor. Npm'yi yükleyin ve örnek autoreload.js'yi yapılandırma klasörüne ekleyin ve temelde işiniz bitti.
Braintapper

1
Kesinlikle muhteşem. Sails için en basit ve en yerel.
Alexus

Im alma Details: Error: ER_ROW_IS_REFERENCED: Cannot delete or update a parent row: a foreign key constraint failtarafından atılan 5/lib/node_modules/sails/lib/hooks/orm/index.js:221I (yelkenleri 11.3 kullanarak) kaydederken
Gab

45

Örneğin nodemonapi ve config dizinlerini izlemek için

.nodemonignore içerik

views/*
.tmp/*
.git/*

.Nodemonignore'u oluşturduktan sonra komutu çalıştırın

$> nodemon -w api -w config

Denetleyicinin 3 dizini yok sayması örneği

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

4
Boruların ek konfigürasyon olmadan standart çıkışa nasıl geri döndüğü göz önüne alındığında nodemonçözüme kıyasla çözümü seviyorum . Geliştirme iş akışını kolaylaştırır. forevernodemon
Aaron Ransley

Komut için sadece .nodemonignoreörneğinizi kullandım ve koştum nodemon. Şimdiye kadar çalışıyor.
Michael J. Calkins

Yukarıdakilerin nasıl çalıştırılacağı konusunda kafası karışan herkes için (eşdeğer) sails lift, nodemon kullanmayı bilir app.js.
Tyler Collier


8

nodemonküresel veya yerel olarak yükleyin .

npm install nodemon --save
npm install nodemon -g

sailsaşağıdaki gibi projenize yerel olarak kurun

npm install sails --save

sonra değiştir package.json

itibaren

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

-e

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

sonra

npm run dev

7

Ben de aynı sorunu yaşadım ve bunu grunt-watch ve grunt-forever @ beta görevleriyle çözdüm. Sonuç 4 grunt komutudur:

GÜNCELLEME: görevler mevcut yelken sürümünde mevcuttur (artık beta değil:>)

  • başlat Sunucuyu başlatır
  • durdur Sunucuyu durdurur
  • yeniden başlat Sunucuyu yeniden başlatır
  • startWatch Sunucuyu başlatır ve değişikliklerin yeniden başlatılmasını bekler (grunt-watch kullanarak). Muhtemelen çözümünüz budur, ancak diğer komutlar da yararlıdır.

Kod şu - bir görev dizini içeren sails @ beta kullanıyorum, bunun önceki sürümlere dahil olup olmadığını bilmiyorum:

  • Öncelikle sonsuza kadar yelken dizininize yüklemelisiniz:

    npm install grunt-forever --save-dev
  • görevler / config / forever.js Sonsuza kadar görevi yapılandırın.

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
    
  • Görevler / config / watch.js ( düzenle ) Yeni bir kural eklemek için izleme görevini düzenleyin

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
    
  • görevler / kayıt / watchForever.js Özel görevlerinizi kaydedin (bu dosya istediğiniz gibi yeniden adlandırılabilir)

    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'
     ]);
    };
    

Bununla birlikte kullanabilmelisin

    grunt startWatch

ve sunucunuzun değişikliklerin yeniden başlatılmasını beklemesini sağlayın:>

Umarım bu yardımcı olmuştur!


6

Kullanman daha iyi

npm install -g nodemon

Bunu kullanıyorum ve geliştirme hızımı artırmaya yardımcı olacak. bunun için herhangi bir dosyayı düzenlemeye gerek yok !.

yüklemeden sonra

nodemon app.js

Her kaydetme için sunucunuzu yeniden başlatmak istiyorsanız, Nodemon iyidir. Ancak, web fırtınası veya otomatik kaydetme özelliğine sahip herhangi bir fikir kullanıyorsanız, sunucunuzu sürekli olarak yeniden başlatacaktır.
Vishnu KR

Kesinlikle Bay Vishnu KR.
BINFAS K

1

Şimdi bu soruya gelen herkes için, bu artık gerekli değil gibi görünüyor - ile başlatılan bir uygulamada sails liftçalışan bir homurdanma izleme görevi olacak ve kod değişiklikleri yeniden başlatılmadan görülebilir.

Bunun ilk başta olduğunu fark etmemiştim çünkü konsolda ne olduğunu gösterecek hiçbir şey yok, ancak yeniden başlatma olmadan çalışıyor gibi görünüyor (Sails 0.11 kullanıyorum)


8

Değişikliklerimi görmek için uygulamayı yeniden başlatmam gerekiyor.
user1007522
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.