web-dev-qa-db-ja.com

Browserifyとお辞儀。規範的アプローチ

私が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または何ですか?

Browserifyをbowerで使用するための何らかの規則はありますか?

29
iLemming

browserify-shim を使用して、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"]
  }
},

次に、コードは、通常のnpmモジュールがあるかのように、短い名前でrequireできます。

「browser」package.jsonプロパティの仕様はこちら

23
Peter Lyons

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

与えられたangularは

bower install angular

次に、jsファイル内は次のようになります。

require("angular");
41
Ian Lim