node.js nodejs gruñir y gloriarse en heroku




upload node js app to heroku (2)

De hecho, probé algunos métodos para asegurarme de qué funciona y qué no funciona para mí. Necesitaba minificar mis scripts con uglify.

  1. Primero, agregué grunt y grunt-contrib-uglify a mis devDependencies (como desarrollé en mi máquina), y probé el script "postinstall" en package.json:

    "scripts": {
      "start": "node index.js",
      "postinstall": "grunt uglify"
    },
    "devDependencies": {
      "grunt": "~0.4.4",
      "grunt-contrib-uglify": "^0.4.0"
    }

    obviamente, esto no funcionó, porque heroku no instala devDependencies.

  2. Después de esto, configuré el buildpack, agregué una tarea heroku a mi Gruntfile.js, eliminé el script postinstall e intenté impulsarlo.

    Esto tampoco fue exitoso, porque el buildpack solo instaló grunt-cli y gruñido, pero no gruunt-contrib-uglify.

  3. Luego, moví grunt & grunt-contrib-uglify a las dependencias de devDependencies. (Si me muevo uglify, ¿por qué no debería moverme gruñir). De esta manera funcionó, pero me hizo sentir: ¿por qué necesito el buildpack, si tengo que agregar gruñido a las dependencias?

  4. He vuelto al buildpack predeterminado

    heroku config:unset BUILDPACK_URL

    y agregó la secuencia de comandos postinstall mencionada anteriormente. esto no funcionaba, porque el comando ronco todavía faltaba.

  5. finalmente, también agregué grunt-cli a las dependencias, y funciona ahora, ¡sin el buildpack!

Conclusión: no necesitas el paquete de compilación y agrega tus dependencias de grunt a "dependencias". O bien, el buildpack debería solucionar este problema: https://github.com/mbuchetics/heroku-buildpack-nodejs-grunt/issues/5

https://code.i-harness.com

Hoy quería implementar mi aplicación node.js en heroku. Localmente estoy usando bower y grunt para el desarrollo también y quería seguir usándolos.

Ahora, siguiendo algunos consejos que encontré en la web, agregué bower a mis dependencies y agregué "postinstall": "node_modules/.bin/bower install a mi package.json postinstall .

Ahora estoy teniendo algunos problemas con el grunt . Cuando muevo mis dependencias de grunt a dependencies de devDependencies grunt no reconoce mis tasks , por ejemplo cuando tengo

    {
      "name": "js-linkedin-connector",
      "version": "0.1.0",
      "dependencies": {
        "passport": "~0.1.17",
        "passport-local": "~0.1.6",
        "passport-linkedin-oauth2": "~1.0.1",
        "connect": "~2.11.0",
        "underscore": "~1.5.2",
        "bower": "1.2.x",
        "grunt": "~0.4.1",
        "grunt-cli": "0.1.11",
        "load-grunt-tasks": "~0.1.0",
        "grunt-contrib-copy": "~0.4.1",
        "grunt-contrib-concat": "~0.3.0",
        "grunt-contrib-coffee": "~0.7.0",
        "grunt-contrib-uglify": "~0.2.0",
        "grunt-contrib-compass": "~0.5.0",
        "grunt-contrib-jshint": "~0.6.0",
        "grunt-contrib-cssmin": "~0.6.0",
        "grunt-contrib-connect": "~0.5.0",
        "grunt-contrib-clean": "~0.5.0",
        "grunt-contrib-htmlmin": "~0.1.3",
        "grunt-contrib-watch": "~0.5.2",
        "grunt-autoprefixer": "~0.2.0",
        "grunt-usemin": "~2.0.0",
        "grunt-svgmin": "~0.2.0",
        "grunt-rev": "~0.1.0",
        "grunt-concurrent": "~0.3.0",
        "grunt-jasmine-node": "~0.1.0",
        "grunt-google-cdn": "~0.2.0",
        "grunt-ngmin": "~0.0.2",
        "time-grunt": "~0.1.0",
        "grunt-karma": "~0.6.2",
        "connect-livereload": "~0.3.0"
      },
      "devDependencies": {
        "karma-ng-scenario": "~0.1.0",
        "karma-script-launcher": "~0.1.0",
        "karma-chrome-launcher": "~0.1.0",
        "karma-firefox-launcher": "~0.1.0",
        "karma-html2js-preprocessor": "~0.1.0",
        "karma-jasmine": "~0.1.3",
        "karma-requirejs": "~0.1.0",
        "karma-phantomjs-launcher": "~0.1.0",
        "karma": "~0.10.4",
        "karma-ng-html2js-preprocessor": "~0.1.0"
      },
      "engines": {
        "node": ">=0.8.0",
        "npm": "1.3.x"
      },
      "scripts": {
        "test": "grunt test",
        "postinstall": "node_modules/.bin/bower install;node_modules/.bin/grunt server:dist"
      }
    }

en mi package.json cuando ./node_modules/.bin/grunt :

Warning: Task "jshint" not found. Use --force to continue.

Aborted due to warnings.

Pero cuando muevo dependencias de grunt a devDependencies :

    {
      "name": "js-linkedin-connector",
      "version": "0.1.0",
      "dependencies": {
        "passport": "~0.1.17",
        "passport-local": "~0.1.6",
        "passport-linkedin-oauth2": "~1.0.1",
        "connect": "~2.11.0",
        "underscore": "~1.5.2",
        "bower": "1.2.x"
      },
      "devDependencies": {
        "grunt": "~0.4.1",
        "grunt-cli": "0.1.11",
        "load-grunt-tasks": "~0.1.0",
        "grunt-contrib-copy": "~0.4.1",
        "grunt-contrib-concat": "~0.3.0",
        "grunt-contrib-coffee": "~0.7.0",
        "grunt-contrib-uglify": "~0.2.0",
        "grunt-contrib-compass": "~0.5.0",
        "grunt-contrib-jshint": "~0.6.0",
        "grunt-contrib-cssmin": "~0.6.0",
        "grunt-contrib-connect": "~0.5.0",
        "grunt-contrib-clean": "~0.5.0",
        "grunt-contrib-htmlmin": "~0.1.3",
        "grunt-contrib-watch": "~0.5.2",
        "grunt-autoprefixer": "~0.2.0",
        "grunt-usemin": "~2.0.0",
        "grunt-svgmin": "~0.2.0",
        "grunt-rev": "~0.1.0",
        "grunt-concurrent": "~0.3.0",
        "grunt-jasmine-node": "~0.1.0",
        "grunt-google-cdn": "~0.2.0",
        "grunt-ngmin": "~0.0.2",
        "time-grunt": "~0.1.0",
        "grunt-karma": "~0.6.2",
        "connect-livereload": "~0.3.0",
        "karma-ng-scenario": "~0.1.0",
        "karma-script-launcher": "~0.1.0",
        "karma-chrome-launcher": "~0.1.0",
        "karma-firefox-launcher": "~0.1.0",
        "karma-html2js-preprocessor": "~0.1.0",
        "karma-jasmine": "~0.1.3",
        "karma-requirejs": "~0.1.0",
        "karma-phantomjs-launcher": "~0.1.0",
        "karma": "~0.10.4",
        "karma-ng-html2js-preprocessor": "~0.1.0"
      },
      "engines": {
        "node": ">=0.8.0",
        "npm": "1.3.x"
      },
      "scripts": {
        "test": "grunt test",
        "postinstall": "node_modules/.bin/bower install;node_modules/.bin/grunt server:dist"
      }
    }

todo funciona bien

¿Cuál es el problema y cómo puedo resolverlo para implementar mi aplicación grunt + bower en heroku?


Mantenga sus dependencias de Grunt en devDependencies , donde pertenecen. Usa un buildpack personalizado para permitir a Heroku ejecutar tu flujo Grunt en su plataforma.

Aplicación de ejemplo que muestra cómo hacer exactamente eso

Buildpacks te permite iniciar la aplicación de forma diferente, en este caso querrás cambiarla desde la configuración de configuración:

heroku config:set BUILDPACK_URL=https://github.com/mbuchetics/heroku-buildpack-nodejs-grunt.git

Entonces solo se trata de agregar una tarea heroku a tu configuración de Grunt.





bower