Yeoman generator-angular : 'task wiredep' 不在 gulpfile 中 & $.useref.restore 不是一个函数

Yeoman generator-angular : 'task wiredep' is not in gulpfile & $.useref.restore is not a function

我刚刚开始使用 Yeoman 构建一个新的 Angular 应用程序。我遵循 generator-angular 的安装指南,但选择使用 gulp 而不是 g运行t 来完成 运行ner.

任务

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

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

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

是否有解决上述错误的方法?

我注意到 Yeoman 使用 g运行t,而 gulp 是实验性的,所以我猜上述错误是预料之中的。我应该 post 在生成器的 GitHub 页面上将其作为问题吗?

我运行遇到了同样的问题。 我通过对 gulp 任务 'client:build' 进行以下更改来解决它。 但是,解决这个问题只会让您遇到下一个问题。 Watch 不起作用,实时重新加载不起作用,然后我没有更多时间尝试查找更多问题。 但是我在 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));
});

里面的问题很少。

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

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

第 3 期 .pipe(gulp.dest(yeoman.app + '/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 任务添加到构建中。

希望这能说明问题。