如何使用 gulp 和 jade 设置 wiredep

How to set up wiredep with gulp and jade

我正在尝试使用 wiredep 将 Bower 文件注入我的 jade/html。这个问题是双重的。

  1. 如果我要将 bower_component 保留在根文件夹中。由于我的服务器是从 ./dist 而不是从 root 设置的,所以我无法访问 bower_compoents
  2. 如果我要在我的 ./dist 文件夹中安装 bower-components(到目前为止,这很有意义),并为 bower_component 创建一个唯一的文件路径,我的 bower.json(它也需要它来选择正确的文件路径),然后它将额外的文件路径 ./dist 添加到我的 bower_components。但是,由于我的服务器在 ./dist 中,我需要从我的文件路径中删除 ./dist。

我将针对选项 #2 回答这个问题。我只是想把它放在那里供其他想做相同或类似事情的人使用。

将来我确实想在我的根目录中保留 bower_components,以便将它们全部编译到一个 js 文件中。现在这是可行的,因为它主要是出于原型制作的原因。但是,绝对有兴趣找到一种方法让#1 工作。

我在 github here 中设置了一个分支,供那些有兴趣查看文件结构和完整内容的人使用 gulpfile.js

我最后做的是在我的 dist 文件夹中安装所有 bower_components。我也把我的 bower.json 放在那里。

对于 wiredep 和 jade magic,我在 gulpfile.js 中添加了以下内容:

gulp.task('templates', function() {

  var YOUR_LOCALS = {};

  gulp.src('./app/jade/*.jade')
      .pipe(jade({
          locals: YOUR_LOCALS,
          pretty: true
      }))
      .pipe(wiredep({
      directory: './dist/bower_components',
      bowerJson: require('./dist/bower.json'),
      ignorePath: '/dist'
      }))
      .pipe(gulp.dest('./dist'))
});

奇迹发生在一个真实的地方,那就是 wiredep 的 ignorePath 选项。我能够从 dist 文件夹中获取目录。但是,由于文件路径包含 ./dist,而且我不能让我的服务器从 ./dist 运行,所以我能够忽略 ./dist 并输出正确的文件路径。

另一个注意事项,为了包含,假设在 bower for jade 中包含 javascript 个文件,请使用以下语法

// bower:js
// endbower

就是这样,如果这只帮助了那里的一个人,那是值得的。如果您有任何问题,请随时发表评论。