web-dev-qa-db-ja.com

bowerの依存関係を永久に無視する

Bowerで、angular、angular-bootstrapおよびbootstrapをダウンロードしています。 Bootstrapは、プロセスにインストールされているjqueryに依存しています。ただし、ブートストラップのcssのみを使用しているため、プロジェクトでは必要ありません。

だから私は永久にjqueryの依存関係を削除しようとしました

bower uninstall jquery --save

Jqueryがアンインストールされますが、次回bower updateを作成するときに、再度ダウンロードされます。

依存関係を完全にスキップするようにbowerに指示する方法はありますか?

編集:私はこのようなものがあればいいのに:

"resolutions": {
    "jquery": "no, thanks"
}
48

プルリクエスト#1394 追加この機能の公式サポート。bowerバージョン1.6.3以降に存在します。 bower -vでバージョンを確認し、npm install -g bowerを実行してアップグレードします。

参考のため、 .bowerrc公式仕様ドキュメント を参照してください。これがうまくいかない場合は、バグですので bowerに問題を報告してください をお願いします。

次のように.bowerrcでこのように使用します:

{
  "ignoredDependencies": [
    "bootstrap",
    "bootstrap-sass",
    "bootstrap-sass-official"
  ]
}
69
kross

バックボーンがアンダースコアに依存している_bower.jsonが、代わりにLo-Dashを使用しているため、Bowerはインストールのたびにアンダースコアを不必要にプルダウンしていました。サードパーティのライセンスコンプライアンスの自動チェック機能があるため、実際に使用しないものは必要ありません。

私はこれが彼らが意図したものではないことを理解していますが、Bowerの install-hooks は、インストール後に不要なdepsをきれいにするために使用できます(少なくともBowerが「感謝なし」の解決を得るまであなたがほのめかした)。あなたの.bowerrc

{
    "directory": "app/bower_components",
    "scripts": {
        "postinstall": "rm -rf app/bower_components/underscore"
    }
}

ちょっとしたハックですが、動作します。

25
Jarno Rantanen

bower.jsonファイルでもできること:

{
  "dependencies": {
    ...
    "bootstrap": "^3.2.0"
  }
  "overrides": {
    "bootstrap": {
      "dependencies": []
    }
  }
}

これは、jqueryが唯一のものであるため、boostrapの依存関係をすべて削除します(bower info bootstrapで確認できます)。

13
pierrefevrier

依存関係をコミットする場合は、.gitignoreに追加します。それ以外の場合は、違いがないのでそのままにしておきます。必要なものだけを使用し、残りは無視する必要があります。

5
Sindre Sorhus

免責事項:これはあなたの特定の問題を解決するものではありませんが、私の助けになったので、おそらく他の人にも役立つでしょう。

Grunt-bower-taskを使用して、ファイルをlibディレクトリにプルします。 「angular」を除外し、「angular.js」を含めるだけでした。私の依存関係の1つは、「角度」を引き出すことでした。私のbower.json私は今持っています:

{
  "name": "myapp",
  "version": "0.0.1",
  "dependencies": {
    "angular.js": "1.3.15",
    "angular-bootstrap": "0.13.0",
    "angular-cookies": "1.3.15",
    "angular-storage": "0.5.0",
    "angular-ui-router": "0.2.15",
    "mjolnic-bootstrap-colorpicker": "2.1"
  },
  "exportsOverride": {
    "angular": {
      "dump": "*.xxx"
    },
    "angular.js": {
      "js": [ "*.js", "*.js.map" ],
      "css": "*.css"
    }
  },
  "resolutions": {
    "angular": "1.3.15"
  }
} 

私のgruntfile.js 私が持っています:

bower: {
    install: {
        options: {
            targetDir: './lib',
            layout: 'byType',
            install: true,
            cleanTargetDir: true,
            cleanBowerDir: false
        }
    }
},

これにより、「角度のある」ファイルが宛先にコピーされなくなります。

1
Steve N

上記の答えは正しいですが、追加の解決策は、この答えで説明されているように、wiredepを使用することです。

grunt-bower-install:特定のコンポーネントを除外

Grunt-wiredepをインストールした後、これに似たものをGrunt.jsに追加して、jqueryをインジェクトから除外できます。

// Automatically inject Bower components into the app
wiredep: {
  options: {},
  app: {
    src: ['<%= my.app %>/index.html'],
    exclude: ['bower_components/jquery']
  }
},

Bowerは引き続きjqueryをダウンロードしますが、少なくともHTML srcに含まれないように指示できます。

1
dustin.schultz