Napisałem aplikację w Node.js (z Express & socket.io) i Chciałbym użyć Grunta do kompilowania moich materiałów po stronie klienta podczas livereload podczas tworzenia i połączenia z Aplikacja Node.js. Jak mogę to zrobić? (Najlepiej bez uruchamiania aplikacji Node.js w innym porcie i kliencie w innym porcie, ze względu na problemy ze śledzeniem i w wielu domenach)Grunt livereload z aplikacją node.js
Zainstalowałem również program Yeoman i korzystam z pakietu out-box-contrib-livereload, ale z tego co zrozumiałem to za pomocą serwera node.js Podłącz do serwowania plików po stronie klienta, a tym samym są oddzielone od mojego wniosku node.js ..
przykład od Gruntfile.js generowanego przez 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'
]);
Czy konfigurujesz serwer w serwerze server.js, np. Http.createServer (app) .listen (8080)? Jeśli to zrobisz, i uzyskasz dostęp do aplikacji przez localhost: 8080 to nie przeżyje ponownie plików klienta, prawda?Ale jeśli chcesz uzyskać dostęp do localhost: 9000, to będzie, ale znowu aplikacja node.js nie odpowiada z tego miejsca .. czy robię to źle? :) – acoder
Nie Nie konfiguruję http.createServer (app). Używam module.exports = app i kiedy wykonuję polecenie require ("./ server"), zwraca "app", która jest aplikacją ekspresową (każda aplikacja ekspresowa jest oprogramowaniem pośredniczącym do łączenia). Po prostu dostęp do całej aplikacji na http: // localhost: 9000. –
To jest dość hackish, ale udało mi się uzyskać nodejs + connect/livereload + grunt do ładnej gry. https://github.com/sheenobu/yo-nodejs-example/commit/663509d7d7e41004c402e322292a9a4b14122002 –