我正在从bower复制jQueryUI库。我只想从他们的"主题"中复制两个主题。目录。我想保留的主题文件夹是" base"和" ui-lightness"。
如何通过globbing模式实现这一目标?
我试过这个......
gulp.src([
'./bower_components/jqueryui/**',
'!./bower_components/jqueryui/themes/**(!base/**)'
])
这是目录结构:
├── themes
│ ├── base
│ ├── black-tie
│ ├── blitzer
│ ├── cupertino
│ ├── dark-hive
│ ├── dot-luv
│ ├── eggplant
│ ├── excite-bike
│ ├── flick
│ ├── hot-sneaks
│ ├── humanity
│ ├── le-frog
│ ├── mint-choc
│ ├── overcast
│ ├── pepper-grinder
│ ├── redmond
│ ├── smoothness
│ ├── south-street
│ ├── start
│ ├── sunny
│ ├── swanky-purse
│ ├── trontastic
│ ├── ui-darkness
│ ├── ui-lightness
│ └── vader
└── ui
├── i18n
└── minified
答案 0 :(得分:1)
Gulp v4.x
当前的gulp文档包含一个示例glob pattern,可以自定义以满足您的要求。请尝试以下方法:
gulp.task('copyfoobar', function() {
gulp.src([
'bower_components/jqueryui/**', // [1]
'!bower_components/jqueryui/themes/**', // [2]
'bower_components/jqueryui/themes/{base,ui-lightness}/**' // [3]
], { base: './' } )
.pipe(gulp.dest('./dist'));
});
上面显示的Array
个小标签执行以下操作:
[1]
匹配bower_components/jqueryui/
目录下的所有内容。[2]
从通过前一个glob模式创建的列表中否定bower_components/jqueryui/themes
目录(及其中的所有内容)。[3]
将bower_components/jqueryui/themes/base
和bower_components/jqueryui/themes/ui-lightness
目录(以及其中的所有内容)添加回列表。 注意: 上述解决方案假定bower_components
目录与gulpfile.js
位于同一目录中,目标目录为{ {1}}。
结果目录树:
如果您不希望将dist
目录添加到目标/目标目录(例如bower_components
),请将base选项设置为:
dist
这将导致类似这样的事情:
{ base: './bower_components/' }
将.
└── dist
└── jqueryui
├── themes
│ ├── base
│ │ └── ...
│ └── ui-lightness
│ └── ...
└── ...
选项设置为:
base
结果如下:
{ base: './' }
Gulp v3.x
不幸的是,上面显示的示例在 Gulp版本3.x 中不起作用,因为 Negations (.
└── dist
└── bower_components
└── jqueryui
├── themes
│ ├── base
│ │ └── ...
│ └── ui-lightness
│ └── ...
└── ...
)的处理方式不同 - 它们总是在最后完成不管它们在glob !
中指定的顺序如何。 issue 837中讨论的更多信息。
变通方法(对于v.3.x)是利用gulp-src-ordered-globs,这将允许您使用与上一个示例相同的Array
个globs。
这个代码将是:
Array
答案 1 :(得分:0)
试试这个
"\"\""
答案 2 :(得分:0)
我只是这样做了。我认为在一项任务中弄清楚它有点太难了。
var task1 = gulp.src(base + 'jqueryui/*.*').pipe(gulp.dest(target));
var task2 = gulp.src(base + 'jqueryui/ui/**').pipe(gulp.dest(target + '/ui/'));
var task3 = gulp.src(base + 'jqueryui/themes/base/**').pipe(gulp.dest(target + '/themes/base/'));
var task4 = gulp.src(base + 'jqueryui/themes/ui-lightness/**').pipe(gulp.dest(target + '/themes/ui-lightness/'));
return [task1, task2, task3, task4];