tutorial serve grunt example gruntjs grunt-contrib-connect

gruntjs - serve - Usando grunt-contrib-connect-URL de página abierta con ruta de contexto agregada



livereload grunt (4)

Sí, puedes hacerlo sin muchos problemas, solo configura la opción open :

connect: { options: { port: 9000, livereload: 35729, hostname: ''localhost'' }, livereload: { options: { open: { target: ''http://localhost:9000/myappcontext/secured'' }, base: [ ''app'' ] } } }

Puede consultar el archivo README para obtener más información sobre las opciones disponibles.

He configurado el grunt connect así:

connect: { options: { port: 9000, livereload: 35729, hostname: ''localhost'' }, livereload: { options: { open: true, base: [ ''app'' ] } } }

Eso funciona genial: carga mi página index.html como:

http://localhost:9000

Sin embargo, para mantener esto coherente con la forma en que se cargará en producción, me gustaría cargarlo con una ruta de contexto adicional añadida, como:

http://localhost:9000/myappcontext/secured

¿Se puede hacer esto simplemente con grunt-contrib-connect? ¿O necesito agregar algún otro proxy / middleware?

¿Alguien tiene un ejemplo simple de este tipo de configuración?


Tengo un método estúpido, ¡pero es un método!

copy: { "mount-server": { files: [{ expand: true, dot: true, cwd: ''<%= yeoman.app %>'', dest: ''./.mount-server/myappcontext/secured/'', // your expected path here src: [ ''**/**'' ] }] } } open: { server: { path: ''http://localhost:9000/myappcontext/secured/index.html'' } } connect: { options: { port: 80, // change this to ''0.0.0.0'' to access the server from outside hostname: null }, livereload: { options: { middleware: function (connect, options) { return [ lrSnippet, mountFolder(connect, ''.tmp''), mountFolder(connect, "./.mount-server/") ]; } } } } grunt.registerTask(''prepareServer'', [ "clean:mount-server", "copy:mount-server" ]); grunt.registerTask(''server'', function (target) { grunt.task.run([ ''concurrent:server'', ''prepareServer'', ''connect:livereload'', ''open:server'', ''watch'' ]); });


Puede usar Rewrite middleware rules para cargar desde una raíz de contexto diferente https://github.com/viart/http-rewrite-middleware

Esto funcionaría en su escenario:

var rewriteModule = require(''http-rewrite-middleware''); middlewares.push(rewriteModule.getMiddleware([ //Load App under context-root of ''myappcontext/secured'' {from: ''^/myappcontext/secured(.*)$'', to: ''/$1''}, //Redirect slash to myappcontext/secured as convenience {from: ''^/$'', to: ''/myappcontext/secured'', redirect: ''permanent''}, //Send a 404 for anything else {from: ''^/.+$'', to: ''/404''} ]));


Dado que se trata de una publicación bastante anticuada, pensé en compartir lo que tenía que hacer, ya que algunas de las bibliotecas están desactualizadas incluso con las bibliotecas a las que se hace referencia. También esto muestra todo el proceso, en lugar de fragmentar los comentarios.

El ejemplo en la biblioteca https://github.com/viart/grunt-connect-rewrite está usando una versión muy antigua de grunt-contrib-connect

Desde la versión 0.11.x, el nuevo grunt-contrib-connect no es compatible con connect.static y connect.directory. Necesita usar otra biblioteca serve-static

var rewriteRulesSnippet = require(''grunt-connect-rewrite/lib/utils'').rewriteRequest, serveStatic = require(''serve-static''); connect: { options: { port: 9000, hostname: ''localhost'', livereload: true //default port is 35729 }, rules: [ { from: ''^/yourfolder/(.*)$'', to: ''/$1'' } ], server: { options: { base: ''./app'', //where the files are served from open: { target: ''http://localhost:9000/yourfolder'' }, middleware: function(connect, options) { return [ rewriteRulesSnippet, // RewriteRules support serveStatic(options.base[0]) // new library used here ]; } } } }