使用Gulp中的变量作为目标文件名
Using variables in Gulp for the destination file name?
我是gulp的新手,我想知道我想要实现的是实际的还是可能的。
我的项目结构:
root
|
components
| |
| component_1
| | styles.scss
| | actions.js
| | template.html
| | ...
| component_2
| | styles.scss
| | template.html
| | ...
|
public
|
assets
|
css (dest)
| component_1.css
| component_2.css
| ...
js (dest)
现在我想要的是Gulp存储编译后的css文件在公共/资产的css文件夹中,但使用它找到的scss文件的文件夹名称。这可能吗?我需要管道到一个插件吗?谢谢!另外,我确实意识到我可以通过重命名scss来实现这一点,但这是我想避免的。
这并不难,这取决于您对动态的需要程度。Gulp是纯JS,所以你可以很容易地编写自己的函数。您可以使用gulp-rename
插件在保存之前重命名部分或全部文件名。
这里有一个粗略的想法让你开始:
var rename = require('gulp-rename'),
path = require('path'),
glob = require('glob'); // npm i --save-dev glob
var components = glob.sync('components/*').map(function(componentDir) {
return path.basename(componentDir);
});
components.forEach(function(name) {
gulp.task(name+'-style', function() {
return gulp.src('components/'+name+'/styles.scss')
.pipe(sass()) // etc
.pipe(rename(name + '.css'))
.pipe(gulp.dest('public/assets/css'))
});
gulp.task(name+'-js', function() {
// similar idea for JS files
});
gulp.task(name+'-build', [name+'-style', name+'-js']);
});
// build all components
gulp.task('build-components', components.map(function(name){ return name+'-build'; }));
现在每个组件都有名为component_1-build
, component_1-style
, component_1-js
等的任务。
您还有一个可以构建所有组件的任务
我知道这个老问题,但是我今天一直在玩这个领域,因此遇到了这个问题。如果您想对目标路径做一些动态操作,这可能会对某人有所帮助。
您可以提供一个函数作为gulp.dest的参数,从而在目标路径上做一些预处理,如下所示:
.pipe(gulp.dest(function (file) {
// file is the current file in the stream
// do something here
return pathString;
}));
相关文章:
- TableExport jquery插件:文件名和扩展名问题
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 通过javascript下载文件时设置文件名
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- Href:当前DIV中的目标ID
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- 以ECMAScript 5及更高版本为目标时,八进制文字不可用
- JS-使用Ajax获取文件名
- 如何使用ember.js在操作中传递当前上下文中目标旁边的信息
- Javascript事件.锚的目标问题
- 任何一种简单的方法都可以将带有onload的元素作为目标
- 使用javascript将表单提交到iframe目标中
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- 根据HTML文件名授予web服务器写入权限
- 通过JavaScript设置表单目标
- AngularJS-如何列出给定文件夹中的文件名
- 使用Gulp中的变量作为目标文件名
- Gulp dest()基于文件名的动态目标文件夹