programing

코드 변경시 Sails.js 앱을 자동으로 다시로드합니까?

nasanasas 2020. 8. 16. 20:46
반응형

코드 변경시 Sails.js 앱을 자동으로 다시로드합니까?


현재 sails.js 앱의 코드 변경에 대해 수동으로 sails 서버를 중지 sails lift하고 변경 사항을 확인하기 전에 다시 실행해야하는 것으로 보입니다 .

개발 모드에서 실행할 때 코드 변경을 감지하면 자동으로 sails 서버를 다시 시작하는 방법이 있는지 궁금합니다.


forever , nodemon 또는 다른 것과 같은 감시자를 사용해야합니다 ...

  1. 다음 을 실행하여 영원히 설치하십시오 .

    sudo npm install -g forever

  2. 실행 :

    forever -w start app.js


Sails가 .tmp폴더에 쓰기 때문에 무한 재시작을 방지하기 위해 .foreverignore프로젝트 디렉토리에 파일을 생성 하고이 콘텐츠를 내부에 넣을 수 있습니다.

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

GitHub : Forever restarting because /.tmp 의 문제를 참조하십시오 .


sails-hook-autoreload를 사용할 수 있습니다.

정상적으로 앱을 들어 올리면 모델 또는 컨트롤러 파일을 추가 / 변경 / 제거 할 때 앱을 낮추거나 다시 들어 올릴 필요없이 모든 컨트롤러와 모델이 다시로드됩니다.


예를 들어 nodemonapi 및 config 디렉토리를 감시하려면

.nodemonignore 내용

views/*
.tmp/*
.git/*

.nodemonignore를 만든 후 명령 실행

$> nodemon -w api -w config

감독자가 3 개의 디렉토리를 무시하는 예

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

Sails 0.11을 사용하는 경우이 후크를 설치하여 모델이나 컨트롤러를 변경할 때 자동으로 다시로드 할 수 있습니다 (보기는 다시로드 할 필요가 없음).

npm install sails-hook-autoreload

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


나는 같은 문제가 있었고 sails @ beta 작업과 함께 grunt-watch 및 grunt-forever를 사용하여 문제를 해결했습니다. 결과는 4 개의 grunt 명령입니다.

업데이트 : 작업은 현재 sails 버전에서 사용할 수 있습니다 (더 이상 베타 버전이 아닙니다. :>).

  • start 서버를 시작 합니다.
  • stop 서버를 중지합니다.
  • restart 서버를 다시 시작합니다.
  • startWatch 서버를 시작하고 변경 사항을 기다렸다가 다시 시작합니다 (grunt-watch 사용). 이것은 아마도 당신의 해결책이지만 다른 명령도 유용합니다.

코드는 다음과 같습니다. 작업 디렉토리 가 포함 된 sails @ beta를 사용하고 있습니다. 이것이 이전 버전에 포함되어 있는지 모르겠습니다.

  • 먼저 sails 디렉토리에 영원히 설치해야합니다.

    npm install grunt-forever --save-dev
    
  • tasks / config / forever.js 영구 작업을 구성합니다.

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
    
  • tasks / config / watch.js ( 편집 ) 새 규칙을 추가하기 위해 감시 작업 편집

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
    
  • tasks/register/watchForever.js Register your custom tasks (this file can be renamed to whatever you want)

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

With this you should be able to use

    grunt startWatch

and make your server wait for changes to be restarted :>

Hope this helped!


install nodemon globally or locally.

npm install nodemon --save
npm install nodemon -g

install sails locally in you project as follows

npm install sails --save

then change package.json

from

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

to

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

then

npm run dev

Better you use

npm install -g nodemon

i am using this, and it will helps to improve my developing speed. no need to edit any files for this one!.

after installation

nodemon app.js

For anyone coming to this question now, it seems that this is no longer necessary - an application launched with sails lift will have a grunt watch task running, and code changes will be visible without a restart.

I didn't realise this was happening at first because there's nothing to indicate what's happening in the console, but it does seem to work without a restart (I'm using Sails 0.11)

참고URL : https://stackoverflow.com/questions/18687818/auto-reloading-a-sails-js-app-on-code-changes

반응형