首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Gulp.js 4函数中的多个文件名创建一个for循环

为Gulp.js 4函数中的多个文件名创建一个for循环
EN

Stack Overflow用户
提问于 2019-10-22 00:59:44
回答 1查看 199关注 0票数 0

我目前正在尝试为每个页面使用一个svg精灵,以便它只为每个单独的页面加载必要的svg。当前正在工作,但我想创建一个数组,以便为我想要的N个页面调用任务get。

我目前在gulpfile.js (版本4)中有这个结构:

代码语言:javascript
复制
var autoprefixer = require('autoprefixer'),
    browsersync = require('browser-sync').create(),
    cssnano = require('cssnano'),
    sourcemaps = require('gulp-sourcemaps'),
    del = require('del'),
    gulp = require('gulp'),
    imagemin = require('gulp-imagemin'),
    newer = require('gulp-newer'),
    plumber = require('gulp-plumber'),
    postcss = require('gulp-postcss'),
    rename = require('gulp-rename'),
    sass = require('gulp-sass'),
    svgSprite = require('gulp-svg-sprite');

//Create SVG's into one single image file
function svgs(){
    return gulp
        .src('app/images/src/pageName/*')
        .pipe(svgSprite({
           shape: {
               spacing: {
                   padding: 5
               }
           },
           mode: {
               css: {
                   dest: './',
                   layout: 'diagonal',
                   sprite: 'images/dist/pageName/sprite.svg',
                   bust: false,
                   render: {
                       scss: {
                           dest: 'sass/modules/sprites/_pageName.scss',
                           template: 'app/sass/modules/sprites/_pageNameTemplate.scss'
                       }
                   }
               }
           },
           variables: {
               mapname: 'icons'
           }
       }))
       .pipe(gulp.dest('app/'));
}

exports.svgs = svgs;

我们的想法是创建一个包含页面名称的数组,并执行for循环:

代码语言:javascript
复制
    var pages = ['page1', 'page2',...];

    function svgs(){
        for (var i = 0; i < pages.length; i++) {

            return gulp
                 .src('app/images/src/' + pages[i] + '/*').........
    }

然后在控制台中只调用任务,但return只在一次迭代中执行,有人以前这样做过吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 01:13:40

尝试glob.sync它返回一个数组:

代码语言:javascript
复制
const glob = require('glob');

const pageArray = glob.sync('path/to/your/*.pages');

function svgs(done)  {

  pageArray.forEach( page => {
    return gulp.src(page)
      ...
  };
  done();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58490977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档