[node.js] 코드 변경시 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


답변

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


답변

나는 같은 문제가 있었고 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 사용자 지정 작업을 등록합니다 (이 파일은 원하는 이름으로 바꿀 수 있음).

    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

변경 사항이 다시 시작될 때까지 서버를 기다리십시오.

이것이 도움이 되었기를 바랍니다!


답변

더 나은 사용

npm install -g nodemon

나는 이것을 사용하고 있으며 개발 속도를 향상시키는 데 도움이 될 것입니다. 이 파일을 위해 파일을 편집 할 필요가 없습니다!.

설치 후

nodemon app.js