Просматривайте и беседуйте. Канонический подход

То, как я сейчас использую пакеты, недоступные из коробки в npm, выглядит так:

package.json имеет:

 "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"

и это устанавливает файлы в каталог node_modules, и я использую их изначально, как это

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

Это работает, но я подумал, можно ли использовать пакеты, установленные с помощью Bower (в определенную папку Bower), и использовать их изначально как модули узла? Можно ли настроить разрешение модуля узла и заставить его искать модули не только в каталоге node_modules, но и в каталоге Bower? Или, может быть, используя npm link или что-то еще?

Есть ли какое-то соглашение для использования браузера с беседкой?


person iLemming    schedule 16.05.2014    source источник
comment
Зачем вам использовать angular на сервере? Или эти требования появляются в браузере?   -  person Ian Warburton    schedule 14.11.2014


Ответы (2)


Вы можете использовать browserify-shim и настроить установленные в Bower модули в вашем package.json следующим образом:

"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"]
  }
},

Затем ваш код может require идентифицировать их по их короткому имени, как если бы это были обычные модули npm.

Вот спецификация для свойства package.json браузера.

person Peter Lyons    schedule 16.05.2014
comment
Кажется, просто установка всего в разделе браузера работает (даже без установки browserify-shim)... Теперь вопрос: поддерживает ли browserify подстановочные знаки в разделе браузера? мы можем сделать: браузер: {*:./bower_components/}. Или каждый отдельный пакет должен быть явно указан? - person iLemming; 16.05.2014
comment
Поддержка подстановочных знаков кажется мне маловероятной, но попробуйте. - person Peter Lyons; 16.05.2014

Вы можете попробовать установить через debowerify.

Тогда package.json может выглядеть следующим образом:

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

Данный угловой установлен с

bower install angular

Тогда в файле js будет следующее:

require("angular");
person Ian Lim    schedule 22.05.2014