eugeneware / debowerify

A browserify transform to enable the easy use of bower components in browserify client javascript projects. This can be used in conjunction with deamdify to require AMD components from bower as well.
493 stars 51 forks source link

Allow ignore specific bower components #73

Open MilosMosovsky opened 8 years ago

MilosMosovsky commented 8 years ago

Hello , currently i am developing angular.js application with browserify . I am using both NPM + Bower, but i am facing problem that i have installed angular both in bower and npm , but i want to force load it from npm, because bower repo is broken for browserify. Also some modules has newer version in npm repos than bower (but some other modules has its dependecy so it is force loaded via bower)

Currently i made this changes to debowerify

https://github.com/eugeneware/debowerify/blob/master/index.js#L8

module.exports = function (file, options, module_options) {

  var defaultConfig = {
      ignoreModules : []
  };
  var bowerModules;
  if (!options) options = {};
  module_options = module_options || defaultConfig;

i made new function parameter to set debowerify options , so i can pass my new ignoreModules parameter.

Then i skipped this module here

https://github.com/eugeneware/debowerify/blob/master/index.js#L100

      //break if module should be ignored
      if(module_options.ignoreModules.indexOf(moduleName) !== -1) return;

then i adjusted my browserify build to :

  bundler.transform(function(file,options) {
    var config = { ignoreModules : [
        'angular'
    ]};
    return debowerify(file,options,config)
  });

Let me know if this is worth of PR or i should make own forked version of debowerify. Thanks.

ilovett commented 8 years ago

:+1: this would also be good for loading from an external browserify bundle

Merott commented 8 years ago

I've made a PR to support a preferNPM option, which ignores any bower components that are also found to be installed as node modules. See #78.