javascript - 如何在 gulp-template 中使用与模式匹配的实际文件名

标签 javascript gruntjs gulp

我的项目结构是这样的:

./
 -index.html
 -js/
    -app.js
    -home/
         -home.js

我想匹配 js 文件夹中的所有 javascript 文件并在索引文件中使用它们。所以,在我的 gulpfile.js 中是这样使用的:

var gulp = require('gulp'),
template = require('gulp-template');

var js = ['js/**/*.js'];

gulp.task('default', function() {
return gulp.src('index.html')
        .pipe(template({
            scripts: js,
            name: 'index',
        }))
        .pipe(gulp.dest('dist'))
})

index.html

<%= name %>
<!-- compiled JavaScript --><% scripts.forEach( function ( file ) { %>
<script type="text/javascript" src="<%= file %>"></script><% }); %>

像这样呈现 index.html:

<!-- compiled JavaScript -->
<script type="text/javascript" src="js/**/*.js"></script>

这显然行不通。那么如何显示实际文件名而不是模式?

最佳答案

glob 模式需要扩展为实际文件路径数组。这通常由 gulp.src 为您处理。

您可以使用 globby像这样扩展模式:

var gulp = require('gulp');
var template = require('gulp-template');
var globby = require('globby'); // npm install --save-dev globby

var js = globby.sync(['js/**/*.js']);

gulp.task('default', function() {
    return gulp.src('index.html')
        .pipe(template({
            scripts: js,
            name: 'index',
        }))
        .pipe(gulp.dest('dist'));
});

关于javascript - 如何在 gulp-template 中使用与模式匹配的实际文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076745/

相关文章:

javascript - Node.js 递归循环失败

javascript - 使用 npm 安装 grunt-browser-sync 时出错

javascript - 在 browserify 之前预处理 js

javascript - Laravel Elixir 使用 Typescript 而不是 Javascript

css - gulp js 不连接 css

javascript - 如何为 Highcharts 中的区域线创建 z 索引?

javascript - 无法读取未定义的属性 'thisCompilation' - react-scripts-ts

javascript - 您可以采用 Javascript 库并在 Flash 中运行它吗?

javascript - 403 从本地主机提供资源

ruby-on-rails - ruby 中的 Grunt task runner 相当于什么?