Browserify和bower.规范方法

iLe*_*ing 29 node.js browserify bower

我现在使用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"
Run Code Online (Sandbox Code Playgroud)

并将文件安装到node_modules目录中,我就像这样使用它们

require('angular/angular')
require('ui-router') 
... etc
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我在想是否可以使用与bower一起安装的软件包(进入特定于bower的文件夹)并将它们原生用作节点模块?是否可以调整节点的模块分辨率并强制它不仅在node_modules目录中查找模块,还在bower目录中查找模块?或者可能使用npm link或其他什么?

是否有某种惯例与浏览器一起使用browserify?

Ian*_*Lim 41

您可以尝试通过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"
  }
}
Run Code Online (Sandbox Code Playgroud)

给定角度安装

bower install angular
Run Code Online (Sandbox Code Playgroud)

然后在js文件中将如下:

require("angular");
Run Code Online (Sandbox Code Playgroud)


Pet*_*ons 23

您可以使用browserify-shim并在此处配置bower-installed模块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"]
  }
},
Run Code Online (Sandbox Code Playgroud)

然后你的代码可以require通过他们的简短名称,就像有常规的npm模块一样.

这是"browser"package.json属性的规范.

  • 似乎只是设置"浏览器"部分中的所有内容(即使没有安装browserify-shim)...现在问题:浏览器部分中是否支持通配符?我们能做什么:"浏览器":{"*":"./ bower_components /"}.或者每个包都必须明确列出? (2认同)