bower+gulp:bower主文件无法抓取主干amd和下划线amd



main-bower-files无法获取backbone-amdunderscore-amd,有什么想法吗?为什么以及如何修复它?

gullfile.js

var mainBowerFiles = require('main-bower-files');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var filter = require('gulp-filter');
gulp.task('js', function() {
    var jsFiles = ['app/scripts/*'];
    gulp.src(mainBowerFiles().concat(jsFiles))
        .pipe(filter('*.js'))
        .pipe(concat('main.js'))
        .pipe(uglify())
        .pipe(gulp.dest(dest + 'js'));
 });

bower.json,

{
  "name": "requirejs",
  "version": "1.0.0",
  "dependencies": {
    "requirejs": "latest",
    "jquery": "latest",
    "backbone-amd": "latest",
    "underscore-amd": "latest",
    "ember": "latest",
    "ember-data": "latest"
  },
  "authors": [
    "xxx"
  ],
  "license": "MIT",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "app/scripts/vendor",
    "test",
    "tests"
  ]
}

main.js,

require.config({
  paths: {
    'jquery': 'vendor/jquery/dist/jquery',
    'underscore': 'vendor/underscore-amd/underscore',
    'backbone': 'vendor/backbone-amd/backbone',
  }
});
require(['views/app'], function(AppView) {
  new AppView;
  console.log($(".div").length);
});

它只能压缩jqueryemberember-data into one main.js file接受backbone-amdunderscore-amd

我用其他方法测试,

gulp.task('bower', function() {
  return gulp.src(mainBowerFiles(), {
      base: 'app/scripts/vendor/'
    })
    .pipe(gulp.dest('public/lib'));
});

或者,

// grab libraries files from bower_components, minify and push in /public
gulp.task('libs', function() {
    var jsFilter = filter('*.js');
    return gulp.src(mainBowerFiles())
    // grab vendor js files from bower_components, minify and push in /public
    .pipe(jsFilter)
    .pipe(gulp.dest(dest + '/js/vendor'))
    .pipe(uglify())
    .pipe(rename({
        suffix: ".min"
    }))
    .pipe(gulp.dest(dest + '/js/vendor'))
    .pipe(jsFilter.restore());
});

相同的结果-它忽略了backbone-amdunderscore-amd。它是main-bower-files中的错误吗?

不是bug。backbone-amdunderscore-amd没有bower.json,因此没有可以指定主文件的主属性。下面是Ember的bower.json进行比较。

"这将读取您的bower.json,遍历您的依赖项,并返回在包bower.js的主属性中定义的一组文件。"

https://github.com/ck86/main-bower-files#usage

您可以将overrides属性添加到您的bower.json中,以便自己指定正确的文件:

"overrides": {
    "backbone-amd": {
      "main": "backbone.js"
    },
    "underscore-amd": {
      "main": "underscore.js"
    }
}

https://github.com/ck86/main-bower-files#overrides-选项

最新更新