Автоматическая перезагрузка приложения Sails.js при изменении кода?
В настоящее время кажется, что для любого изменения кода в приложении sails.js вам нужно вручную остановить сервер парусов и запустить sails lift
еще раз, прежде чем вы сможете увидеть изменения.
Мне было интересно, есть ли какой-нибудь способ при запуске в режиме разработки для автоматического перезапуска сервера парусов при обнаружении изменения кода?
Ответы
Ответ 1
Вы должны использовать наблюдателя как forever, nodemon или что-то еще...
Пример
Чтобы избежать бесконечного перезапуска, поскольку Sails записывает в папку .tmp
, вы можете создать файл .foreverignore
в каталог проекта и поместить это содержимое внутрь:
**/.tmp/**
**/views/**
**/assets/**
Смотрите вопрос о GitHub:
Перезапуск навсегда из-за/.tmp.
Ответ 2
Вы можете использовать sails-hook-autoreload
Просто поднимите приложение как обычно, и когда вы добавляете/изменяете/удаляете модель или файл контроллера, все контроллеры и модели будут перезагружены без необходимости понижать/отменять приложение.
Ответ 3
Например, с помощью nodemon
для просмотра каталогов api и config
.nodemonignore
Содержание
views/*
.tmp/*
.git/*
Запустите команду после создания .nodemonignore
$> nodemon -w api -w config
Пример для супервизора для игнорирования 3-х каталогов
$> supervisor -i .tmp,.git,views app.js
Ответ 4
Если вы используете Sails 0.11, вы можете установить этот крючок для автоматической перезагрузки при изменении моделей или контроллеров (представления не требуют перезагрузки):
npm install sails-hook-autoreload
https://www.npmjs.com/package/sails-hook-autoreload
Ответ 5
У меня была такая же проблема, и я решил ее использовать grunt-watch и grunt-forever с бета-версиями sails. Результатом является 4 команды grunt:
UPDATE: задачи доступны в текущей версии парусов (она больше не бета: > )
- start Запускает сервер
- остановить Останавливает сервер
- перезагрузка Перезагружает сервер
- startWatch Запускает сервер и ждет изменений, чтобы перезапустить его (используя grunt-watch). Это, вероятно, ваше решение, но другие команды также полезны.
Здесь код - я использую sails @beta, который включает в себя каталог задач, я не знаю, включено ли это в предыдущие версии:
-
Прежде всего, вы должны установить навсегда в своем каталоге парусов:
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
и заставьте ваш сервер ждать перезапуска изменений: >
Надеюсь, это помогло!
Ответ 6
Для тех, кто приступает к этому вопросу сейчас, кажется, что это уже не нужно - приложение, запущенное с sails lift
, будет запускать задачу grunt watch, а изменения кода будут видны без перезагрузки.
Я не понимал, что это происходит сначала, потому что нечего указывать, что происходит в консоли, но похоже, что он работает без перезагрузки (я использую Sails 0.11)
Ответ 7
Лучше использовать
npm install -g nodemon
Я использую это, и это поможет улучшить скорость разработки. нет необходимости редактировать файлы для этого!
после установки
nodemon app.js
Ответ 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