현재 sails.js 앱의 코드 변경에 대해 수동으로 sails 서버를 중지 sails lift
하고 변경 사항을 확인하기 전에 다시 실행해야하는 것으로 보입니다 .
개발 모드에서 실행할 때 코드 변경을 감지하면 자동으로 sails 서버를 다시 시작하는 방법이 있는지 궁금합니다.
답변
forever , nodemon 또는 다른 것과 같은 감시자를 사용해야합니다 …
예
-
다음 을 실행하여 영원히 설치하십시오 .
sudo npm install -g forever
-
실행 :
forever -w start app.js
Sails가 .tmp
폴더에 쓰기 때문에 무한 재시작을 방지하기 위해 .foreverignore
프로젝트 디렉토리에 파일을 생성 하고이 콘텐츠를 내부에 넣을 수 있습니다.
**/.tmp/**
**/views/**
**/assets/**
GitHub : Forever restarting because /.tmp 의 문제를 참조하십시오
.
답변
sails-hook-autoreload를 사용할 수 있습니다.
정상적으로 앱을 들어 올리면 모델 또는 컨트롤러 파일을 추가 / 변경 / 제거 할 때 앱을 낮추거나 다시 들어 올릴 필요없이 모든 컨트롤러와 모델이 다시로드됩니다.
답변
예를 들어 nodemon
api 및 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