Yeoman发电机角度:'任务wiredep'不在gulpfile& $ .useref.restore不是函数

时间:2015-11-01 04:46:17

标签: gulp yeoman yeoman-generator yeoman-generator-angular gulp-useref

我刚刚开始使用Yeoman来构建一个新的Angular应用程序。我按照generator-angular的安装指南,但选择使用gulp而不是grunt作为任务运行器。

安装后我收到错误:task 'wiredep' is not in you gulpfile

我尝试使用gulp运行构建并收到错误:TypeError: $.useref.restore is not a function

如果我运行gulp serve,则生成的页面不会连接依赖项。

是否修复了上述错误?

我注意到Yeoman使用grunt,并且gulp是实验性的,所以我猜上面的错误是预期的。我应该在生成器的GitHub页面上将其作为问题发布吗?

2 个答案:

答案 0 :(得分:7)

那里几乎没有问题。

第一期yeoman指的是gulp wiredep而不是gulp bower: 将gulp.task('bower', function ()重命名为{ gulp.task('wiredep', function () {

第二个问题是bower libs不在directory: yeoman.app + '/bower_components',而在directory: 'bower_components'

第3期.pipe(gulp.dest(yeoman.app + '/views'));不在views文件夹中,而是.pipe(gulp.dest(yeoman.app ));

很长一段时间,请将gulp.task('bower', function ...替换为:

gulp.task('wiredep', function () {
return gulp.src(paths.views.main)
.pipe(wiredep({
  directory: 'bower_components',
  ignorePath: '..'
}))
.pipe(gulp.dest(yeoman.app ));
});

删除dist文件夹,运行gulp wiredepgulpgulp serve或将wiredep任务添加到构建文件夹中。

希望这能澄清它。

答案 1 :(得分:1)

我遇到了同样的问题。 我通过对下面的更改来解决这个问题,即客户:构建'。 但是,解决这个问题只会让你遇到下一个问题。 观看不起作用,实时重新加载不起作用,然后我没有时间试图找到更多问题。 但是我在Github上看到你的错误报告(链接参考:https://github.com/yeoman/generator-angular/issues/1199)所以希望有人可以解决它。

另外,正如你所说,Gulp在这台发电机上是实验性的。

gulp.task('client:build', ['html', 'styles'], function() {
var jsFilter = $.filter('**/*.js');
var cssFilter = $.filter('**/*.css');

var assets = $.useref.assets({
    searchPath: [yeoman.app, '.tmp']
});

return gulp.src(paths.views.main)
    .pipe(assets)
    .pipe(jsFilter)
    .pipe($.ngAnnotate())
    .pipe($.uglify())
    .pipe(jsFilter.restore())
    .pipe(cssFilter)
    .pipe($.minifyCss({
      cache: true
    }))
    .pipe(cssFilter.restore())
    .pipe($.rev())
    .pipe(assets.restore())
    .pipe($.revReplace())
    .pipe($.useref())
    .pipe(gulp.dest(yeoman.dist));
});