【问题标题】:GULP: Get all SVGs in JSONGULP:以 JSON 格式获取所有 SVG
【发布时间】:2017-02-10 19:17:33
【问题描述】:

我有许多需要通过 JSON 提供的 SVG 图标。我喜欢让所有的 SVG 做这样的事情。

{
  "name": "icon-file-name",
  "data": "<svg version=\"1.1\">...</svg>"
},
{
  "name": "icon-file-name",
  "data": "<svg version=\"1.1\">...</svg>"
}

到目前为止,我只有这个:

gulp.task('buildSvgIcon', function() {
  return gulp.src([ paths.svgIcons + '*.svg'])
    .pipe(gulp.dest('./www/assets/cleaned-up-svg-icons/'));
});

这是我需要的:

  1. 获取文件名并将其添加到“name”中。
  2. 获取 SVG 数据并将其添加到“数据”中。
  3. 为双引号添加反斜杠。例如。版本=\"1.1\"。

如果你能告诉我一个如何做到这一点的想法,那将是很大的帮助。

【问题讨论】:

    标签: javascript json gulp


    【解决方案1】:

    类似这样的:

    var fc2json = require('gulp-file-contents-to-json');
    var jsonTransform = require('gulp-json-transform');
    
    gulp.task('svg', function() {
    
        gulp.src(config.paths.svg)
            .pipe(fc2json('contents.json'))
            .pipe(jsonTransform(function(data) {
    
                var resultJson = '',
                    objects = [],
                    keys = Object.keys(data);
    
                for (var i = 0; i < keys.length; i++) {
    
                    objects.push({
                        name: keys[i],
                        data: data[keys[i]]
                    });
                }
    
                // return objects; it's correct json
    
                var i = 0;
                objects.map(function(e) {
    
                    i++;
                    resultJson += JSON.stringify(e) +
                        (i == keys.length ? '' : ',\n');
                });
    
                return resultJson; // it's just what you want in result file, but it's no valid json file
            }))
            .pipe(gulp.dest(config.paths.dist + '/svg_json'));
    });
    

    【讨论】:

    • 它只是在做它的工作。谢谢 :) 有没有办法删除所有 &lt;?xml version=\"1.0\"&lt;!DOCTYPE svg PUBLIC \"...\"
    • 也只是流式传输一个图标,而不是文件夹中有很多图标。
    • 哦,是的,我编辑了很多文件的答案。对于删除标签,您可以使用 gulp-svgmin 或 gulp-svgo
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多