Обозреватель и беседка. Канонический подход
То, как я использую пакеты, которые недоступны из коробки в 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
или что-то еще?
Есть ли какое-то соглашение для использования браузера с беседкой?
Ответы
Ответ 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");