@FlapJalc

Как подключить файл json к файлу pug?

В проекте используется следующая структура файлов:
|--modules
|----module1
|------module1.pug
|------module1.json
|----module2
|------module2.pug
|------module2.json

Затем все модули подключаются к index.pug черех инклюд
|--pages
|----index.pug

И в gulpfile, все pugфайлы компилируются в html, и складываются в директорию dist
gulp.task("html", function() {
  return gulp.src("src/pages/*.pug")
    .pipe(plumber())
    .pipe(pug())
    .pipe(gulp.dest("dist"))
});

Всё стандартно, просто, без замудренного кода.
Но, как теперь мне сделать, чтобы файл module1.json подключился к файлу module1.pug, module2.json к module2.pug, и так далее. Ни в одном уроке на ютубе, ни в одной статье в гугле, я не смог найти как это реализовать. Неужели считывание данных из json это так не востребовано, и непопулярно? Надеюсь здесь мне помогут.
  • Вопрос задан
  • 521 просмотр
Решения вопроса 1
werty1001
@werty1001
undefined
const fs = require( 'fs' )
const path = require( 'path' )

const data = {}
const dir = 'src/modules/'

try {

	const modules = fs.readdirSync( dir )

	modules.forEach( item => {

		const module = path.join( dir, item )

		if ( ! fs.lstatSync( module ).isDirectory() ) return

		const jsons = fs.readdirSync( module ).filter( item => path.extname( item ) === '.json' )

		jsons.forEach( json => {

			const name = path.basename( json, path.extname( json ) )
			const file = path.join( dir, item, json )

			data[name] = JSON.parse( fs.readFileSync( file ) )

		})

	})

} catch (e) {

	console.log(e)

}

// далее отправляем данные в PUG (будет глобальный объект jsons)

gulp.task("html", function() {
  return gulp.src("src/pages/*.pug")
    .pipe(plumber())
    .pipe(pug({locals: {jsons: data}}))
    .pipe(gulp.dest("dist"))
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы