Подтвердить что ты не робот

Обозреватель и беседка. Канонический подход

То, как я использую пакеты, которые недоступны из коробки в 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? Можно ли настроить модуль node и заставить его искать модули не только внутри каталога node_modules, но также и в каталоге bower? Или, может быть, с помощью npm link или что-то еще?

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

4b9b3361

Ответ 1

Вы можете использовать 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.

Вот спецификация свойства "browser" package.json.

Ответ 2

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

Пакет .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"
  }
}

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

bower install angular

Затем в файле js будет отображаться следующее:

require("angular");