Гунп-Ямл Фронт в JSON Добавить имя файла -- json поле с участием yaml поле с участием markdown поле с участием gulp пол Связанный проблема

Gulp Yaml Front Matter to JSON add File Name


1
vote

проблема

русский

Я не уверен, что лучший способ пойти об этом.

Я хотел бы получить <код> yaml <код> front matter из файла markdown преобразуйте его в <код> json при добавлении имени файла, а затем комбинировать их в одном <код> array <код> json файл.

e.g. Файлы <код> bananas.md и <код> apples.md ,

 <код> --- title: Bananas type: yellow count:   - 1   - 2 ---  # My Markdown File   

<Код> apples.md :

 <код> yaml0  

преобразуется в <код> yaml1 :

 <код> yaml2  

Конечно, не будет возврата, так как было бы компактно.

Я нашел какой-то <код> yaml3 плагинов, но это не кажется, что из них именно то, что мне нужно, даже объединено, если я что-то не упускаю.

Английский оригинал

I'm not sure what is the best way to go about this.

I would like to get the yaml front matter from a markdown file convert it to json while adding the name of the file and then combine them in a single array json file.

E.g. the files bananas.md and apples.md,

--- title: Bananas type: yellow count:   - 1   - 2 ---  # My Markdown File 

apples.md:

--- title: Apples type: red count:   - 3   - 4 ---  # My Markdown File 2 

converts to all.json:

[{"title":"Bananas","type":"yellow","count":[1,2],"file":"bananas"}, {"title":"Apples","type":"red","count":[3,4],"file":"apples"}] 

Of course, there wouldn't be a return as it would be compact.

I've found some gulp plugins but it doesn't seem any of them do exactly what I need, even combined, unless I'm missing something.

</div
           

Список ответов

1
 
vote
vote
Лучший ответ
 

<Сильное> Обновление , я создал плагин <код> gulp-pluck , который значительно упрощает процесс.

Вот как это работает:

 <код> var gulp = require('gulp'); var data = require('gulp-data'); var pluck = require('gulp-pluck'); var frontMatter = require('gulp-front-matter');  gulp.task('front-matter-to-json', function(){   return gulp.src('./posts/*.md')   .pipe(frontMatter({property: 'meta'}))   .pipe(data(function(file){     file.meta.path = file.path;   }))   .pipe(pluck('meta', 'posts-metadata.json'))   .pipe(data(function(file){     file.contents = new Buffer(JSON.stringify(file.meta))   }))   .pipe(gulp.dest('dist')) })   

<Сильное> Конечное обновление


Хорошо, потратил время, чтобы понять это. <Код> Gulp нуждается в встроенной <код> reduce функция! (Может быть, я буду работать над этим некоторое время.)

Зависимости включают в себя: <код> gulp , <код> gulp-front-matter , <код> gulp-filter , <код> event-stream , <код> stream-reduce и <код> gulp-pluck0 .

написано в itivescript :

 <код> gulp-pluck1  

и javaScript эквивалент:

 <код> gulp-pluck2  
 

Update, I created the plugin gulp-pluck which vastly simplifies the process.

Here's how it works:

var gulp = require('gulp'); var data = require('gulp-data'); var pluck = require('gulp-pluck'); var frontMatter = require('gulp-front-matter');  gulp.task('front-matter-to-json', function(){   return gulp.src('./posts/*.md')   .pipe(frontMatter({property: 'meta'}))   .pipe(data(function(file){     file.meta.path = file.path;   }))   .pipe(pluck('meta', 'posts-metadata.json'))   .pipe(data(function(file){     file.contents = new Buffer(JSON.stringify(file.meta))   }))   .pipe(gulp.dest('dist')) }) 

End Update


OK, took the time to figure this out. Gulp needs a built-in reduce function! (Maybe I'll work on that some time.)

Dependencies include: gulp, gulp-front-matter, gulp-filter, event-stream, stream-reduce, and gulp-rename.

Written in LiveScript:

gulp.task 'concatYaml' ->    devDest = './dev/public/'    gulp.src './src/posts/*.md'       .pipe filter posted       .pipe front-matter {property: 'meta'}       .pipe es.map (file, cb) ->          file.meta.name = path.basename file.path          file.meta.url = toUrlPath file.meta.name          cb null, file       .pipe reduce ((acc, file) ->           | acc =>             acc.meta.push file.meta             acc          | _ =>             acc = file             acc.meta = [file.meta]             acc       ), void       .pipe es.map (file, cb) ->          file.contents = new Buffer JSON.stringify file.meta          cb null, file       .pipe rename 'posts.json'       .pipe gulp.dest devDest 

And the JavaScript equivalent:

gulp.task('concatYaml', function(){   var devDest;   devDest = './dev/public/';   return gulp.src('./src/posts/*.md')   .pipe(filter(posted))   .pipe(frontMatter({ property: 'meta' }))   .pipe(es.map(function(file, cb){     file.meta.name = path.basename(file.path);     file.meta.url = toUrlPath(file.meta.name);     return cb(null, file);   }))   .pipe(reduce(function(acc, file){     switch (false) {     case !acc:       acc.meta.push(file.meta);       return acc;     default:       acc = file;       acc.meta = [file.meta];       return acc;     }   }, void 8))   .pipe(es.map(function(file, cb){     file.contents = new Buffer(JSON.stringify(file.meta));     return cb(null, file);   }))   .pipe(rename('posts.json'))   .pipe(gulp.dest(devDest)); }); 
</div
 
 

Связанный проблема

8  Кормление моих собственных видео на Screensaver Apple TV  ( Feeding my own videos to apple tv screensaver ) 
На 4-м GEN Apple TV Вы можете выбрать пользовательский URL-адрес файла JSON для загрузки фильмов заставки, кроме Apple. Для этого вам нужно войти в настройки,...

0  Разбор в твиттере JSON  ( Parsing a twitter json ) 
Я использую следующий код для Perfom A Поиск в API Twitter: <код> $.post('lib/themattharris-tmhOAuth-38bd48b/search.php', {q:'@something', pag...

0  Набор ToggleButton состояние из входящих данных JSON  ( Set togglebutton status from incoming json data ) 
<Р> Я пытаюсь следовать Android учебник , чтобы изменить базу данных MySQL данные из приложения Android. Я довольно новый для концепции JSON синтаксического р...

0  Невозможно исключить объект модели службы Liferay Service из JSON, который пришел от Elasticsearch, конструктор по умолчанию не найден  ( Cannot deserialize liferay service model object from json that came from elastic ) 
Использование Liferay Portal и Elasticsearch, сериализация пользовательских объектов, состоящих из объектов обслуживания, сериализация идет нормально: <код>...

1  Отправка аргументов в Drupal Views (JSON, CURL)  ( Sending arguments to drupal views json curl ) 
Я пытаюсь получить вид с датой (узлом), созданный аргументом. Однако, похоже, я не могу получить его на работу правильно, когда я посылаю его, хотя скручивает...

5  Использование Litjson в Unity3D  ( Using litjson in unity3d ) 
2 вопроса. 1) Можно ли использовать библиотеку Litjson AS так же, как и сценарии в JavaScript? Это действительно общий вопрос о том, чтобы иметь возможность...

0  Ajax застрял, когда попробуйте позвать второй раз  ( Ajax stuck when try call second time ) 
Мой код Ajax не хочет отвечать снова, когда код Ajax работает один раз. Мой код: <код> $.ajax({ type : "POST", url : "scriptNext.php", ...

-1  РАСПИСАНИЕ ДЖОНСКИЙ РАССЫЛКИ С ИСПОЛЬЗОВАНИЕМ GSON  ( Json array parsing using gson ) 
У меня есть следующий ответ JSON как: {"StatusCode": 2, "error_fields": [{"User_:« xxx »}, {" пароль ":" yyy "}]}, и я должен разобрать этот ответ, использу...

0  HAL, чтобы десерифицировать ответ JSON, если количество полей от ответа не известно?  ( Haw to deserialize json response if the number of fields from the response not k ) 
С тех пор, как я не сейчас, сколько полей ответа JSON не смогу ли у вас сложный код, чтобы соответствовать объекту JSON. Что такое лучшая практика для десериа...

6  CloudFlare API Перевести зависть в PHP Curl и отправить обновление CNAME  ( Cloudflare api translate curl to php curl and send cname update ) 
Это вопрос и ответ после многих исследований, используя некоторую информацию из других ответов, обнаруженных на StackoverFlow. Как конвертировать command-li...

1  JSON Данные не рендеринга в раскрывании Kendo UI  ( Json data not rendering in kendo ui dropdown ) 
пытается сделать <код> Json Возвращенные данные в <Код> kendo Выпадающий список, но не рендеринг. Пожалуйста, найдите код Snippett. Я могу увидеть бдительну...

0  Удалить определенные свойства в elasticsearch  ( Delete specific properties in elasticsearch ) 
пытается удалить одно из свойств от типа. прямо сейчас я использую клиент Restlest, чтобы проверить это. (Примечание: Postman также предпочтительнее). Это...

1  Загрузка данных NOSQL в Spark Nuckes  ( Loading nosql data into spark nodes ) 
Я пытаюсь понять, что происходит, когда я загружаю данные в искру от источника NoSQL. т.е. Постарается ли это загрузить записи в драйвер, а затем распределить...

0  Объедините несколько столов для ответа JSON в Django Read Framework  ( Combine multiple tables for a json response in django rest framework ) 
Я использую Django Read Framework для моего serializers . Мне нужно создать веб-сервис, который сочетает в себе поля в трех таблицах и дает JSON. У меня ес...

0  карта JSON на провал строки в Java  ( Json map to string failure in java ) 
В Java я пытаюсь преобразовать карту в JSon строку. используя код ниже <код> private void sendResponse(Map<String, String> responseMap) throws IOException {...

Связанный проблема

8  Кормление моих собственных видео на Screensaver Apple TV 
0  Разбор в твиттере JSON 
0  Набор ToggleButton состояние из входящих данных JSON 
0  Невозможно исключить объект модели службы Liferay Service из JSON, который пришел от Elasticsearch, конструктор по умолчанию не найден 
1  Отправка аргументов в Drupal Views (JSON, CURL) 
5  Использование Litjson в Unity3D 
0  Ajax застрял, когда попробуйте позвать второй раз 
-1  РАСПИСАНИЕ ДЖОНСКИЙ РАССЫЛКИ С ИСПОЛЬЗОВАНИЕМ GSON 
0  HAL, чтобы десерифицировать ответ JSON, если количество полей от ответа не известно? 
6  CloudFlare API Перевести зависть в PHP Curl и отправить обновление CNAME 
1  JSON Данные не рендеринга в раскрывании Kendo UI 
0  Удалить определенные свойства в elasticsearch 
1  Загрузка данных NOSQL в Spark Nuckes 
0  Объедините несколько столов для ответа JSON в Django Read Framework 
0  карта JSON на провал строки в Java 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.