Browserify y bower. Enfoque canónico


La forma en que estoy usando paquetes que no están disponibles fuera de la caja en npm, ahora mismo es así:

Paquete.json tiene:

 "napa": {
     "angular": "angular/bower-angular",
     "angular-animate": "angular/bower-angular-animate",
     "d3": "mbostock/d3",
     "ui-router":"angular-ui/ui-router",
     "bootstrap":"twbs/bootstrap"
  },
  "scripts": {
     "install": "node node_modules/napa/bin/napa"

Y que instala archivos en el directorio node_modules, y los uso de forma nativa como este

require('angular/angular')
require('ui-router') 
... etc

Eso funciona, pero estaba pensando si es posible usar paquetes instalados con bower (en una carpeta específica de bower) y usarlos de forma nativa como módulos de nodo? ¿Es posible ajustar la resolución del módulo del nodo y forzarlo a buscar módulos no solo ¿dentro del directorio node_modules, pero también en el directorio bower? O tal vez usando npm link o lo que sea?

¿Hay algún tipo de convención para usar browserify con bower?

Author: iLemming, 2014-05-16

2 answers

Puede usar browserify-shim y configurar los módulos instalados en bower en su package.json de la siguiente manera:

"browser": {
  "angular": "./bower_components/angular/angular.js",
  "angular-resource": "./bower_components/angular-resource/angular-resource.js"
},
"browserify-shim": {
  "angular": {
    "exports": "angular"
  },
  "angular-resource": {
    "depends": ["./bower_components/angular/angular.js:angular"]
  }
},

Entonces su código puede require ellos por su nombre corto como si hubiera módulos npm regulares.

Aquí está la especificación para el paquete "browser".propiedad json .

 23
Author: Peter Lyons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-16 17:53:06

Puede intentar instalar a través de debowerify

El paquete.json puede entonces verse como sigue:

{
  "name": "browserify-begin",
  "version": "0.0.0",
  "dependencies": {
  },
  "browserify": {
    "transform": [
      "debowerify"
    ]
  },
  "devDependencies": {
    "browserify": "^4.1.5",
    "debowerify": "^0.7.1",
    "grunt": "^0.4.5"
  }
}

Dado angular se instala con

bower install angular

Luego dentro del archivo js será como sigue:

require("angular");
 41
Author: Ian Lim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-22 22:17:59