Я написал приложение в Node.js (с помощью Express & socket.io) и Я хотел бы использовать Grunt для компиляции своих клиентских файлов с помощью функции «загрузка» при разработке и подключении к Приложение Node.js. Как я могу это сделать? (желательно, не запуская приложение Node.js в другом порту и клиенте в другом порту, из-за проблем с переходом и междоменными доменами)Grunt livereload с приложением node.js
Я установил также Yeoman, и он использует из коробки пакет grunt-contrib-livereload, но от того, что я понял, он использует сервер Node.js Connect для обслуживания на стороне клиента файлы, таким образом отделяется от моего приложения Node.js ..
Пример из Gruntfile.js генерируемой Yeoman:
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// ... cut some parts
grunt.initConfig({
watch: {
livereload: {
files: [
'<%= yeoman.app %>/*/*.html',
'{.tmp,<%= yeoman.app %>}/styles/*.css',
'{.tmp,<%= yeoman.app %>}/scripts/*.js',
'<%= yeoman.app %>/images/*.{png,jpg,jpeg}'
],
tasks: ['livereload']
}
// ..cut some parts
},
connect: {
livereload: {
options: {
port: 9000,
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'app')
];
}
}
}
}
// ..cut some parts
});
grunt.registerTask('server', [
'clean:server',
'coffee:dist',
'compass:server',
'livereload-start',
'connect:livereload',
'open',
'watch'
]);
Вы настроили сервер на сервере server.js, таком как http.createServer (app) .listen (8080)? Если вы это сделаете и получите доступ к приложению через localhost: 8080, он не будет перезагружать файлы клиента, верно?Но если вы будете обращаться к localhost: 9000, это будет, но затем приложение node.js не ответит оттуда .. или я делаю это неправильно? :) – acoder
Нет. Я не настраиваю http.createServer (приложение). Я использую module.exports = app, и когда я требую («./ server»), он возвращает «приложение», которое является экспресс-приложением (каждое экспресс-приложение является промежуточным программным обеспечением для подключения). Я просто обращаюсь ко всему приложению на http: // localhost: 9000. –
Это довольно хакерский, но я смог получить nodejs + connect/livereload + grunt, чтобы играть красиво. https://github.com/sheenobu/yo-nodejs-example/commit/663509d7d7e41004c402e322292a9a4b14122002 –