如何在 gulp 模板中使用与模式匹配的实际文件名
how to use actual file name matched by pattern in gulp-template
我的项目结构是这样的:
./
-index.html
-js/
-app.js
-home/
-home.js
我想匹配文件夹中的所有 javascript 文件js
并在索引文件中使用它们。所以,在我的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'))
})
索引.html
<%= name %>
<!-- compiled JavaScript --><% scripts.forEach( function ( file ) { %>
<script type="text/javascript" src="<%= file %>"></script><% }); %>
呈现索引.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'));
});
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- Javascript重复模式匹配,然后输出到文本区域
- 我可以禁用参数模式匹配吗
- JavaScript测验的模式匹配
- RegEx模式匹配101-999
- 使用 Karma,如何排除与模式匹配的所有文件,但特定子文件夹中的文件除外
- 如何使用lodash返回与模式匹配的属性数组
- Regex模式匹配连接
- 正则表达式模式匹配特定单词
- 查找具有与模式匹配的属性的元素
- 在无类型语言中是否存在模式匹配之类的东西
- JavaScript REGEX 模式匹配
- 模式匹配检查范围之间的邮政编码
- gulp.src 排除与模式匹配的所有文件,除了一个 - 不工作
- 忽略模糊匹配并使用 JavaScript 添加精确的单词模式匹配
- 查找与模式匹配的所有子字符串
- 我在这里是否正确使用了模式匹配
- 数字、字母块的正则表达式模式匹配
- 如何在 gulp 模板中使用与模式匹配的实际文件名