@ronny

Цикл gulp берет только последнее значение?

Есть вот такой код gulp с циклом

`exports.default = compileSaveTool`

function compileSaveTool (cb) {
  ...
  for (const tool in allCodes) {
    for (const code of allCodes[tool]) {
      const lang = code.length === 2 ? code : code.slice(0, -3)
      compile(allASaveTools, code, lang, allCodes, tool)
    }
  }
  cb()
}


И функция `compile`

function compile (allASaveTools, code, lang, allCodes, tool) {
  /** Сборка HTML на конкретном языке */
  const langFile = yaml.safeLoad(
    fs.readFileSync(`${srcDir}/lang/landing/${lang}.yaml`, 'utf8')
  )
  const JsChunks = utils.getAppJsChunks()
  const CssChunks = utils.getAppCssChunks()
  const langInfo = require(`${srcDir}/lang/langInfo.json`)
  const content = fs.readFileSync(
    `${srcDir}/lang/save_tools/${lang}/${tool}.md`,
    'utf8'
  )
  // FIXME тут ГЛЮК! почему-то используется послежний язык в списке
  const more = {
    code, // <=== !!!!!! передаем код в шаблонизатор
    langInfo,
    content: md.render(content),
    filename: tool,
    allASaveTools: allASaveTools,
    h1: allASaveTools[tool][lang]['title'],
    moment,
    allCodes,
    JsChunks,
    CssChunks
  }
  return src(`${srcDir}/templates/save_tools.html.ejs`)
    .pipe(ejs(Object.assign(allASaveTools[tool][lang], more, langFile))) // <=== !!!!!! шаблонизатор
    .pipe(replace('<img src', '<img loading="lazy" src'))
    .pipe(rename('index.html_' + code)) // <=== !!!!!! добавляем к имени файла
    .pipe(dest(`dist/${code}/${tool}/`)) // <=== !!!!!! код также в структуре папок
}


В `lang` код языка типа `ru`, а в `code` - типа `ru-ru` или `ru-by`. Так вот, code используется в пути к файлу и в шаблонизаторе ``. А также добавил его к имени файла для наглядности.

Все файлы создаются в нужных папках с нужными именами согласно списку языковых кодов (code). Например,

- `dist/ru-ru/tool1/index.html_ru-ru`
- `dist/ru-by/tool1/index.html_ru-by`
- `dist/ru-kz/tool1/index.html_ru-kz`

Но вот внутри файлов почему-то оказывается только последний код языка. То есть в каждом этом файле будет записан код `ru-kz`, а не тот, что был передан в шаблонизатор. При этом все остальные переменные шаблона записаны правильно. Кроме кода.

Почему так происходит?
  • Вопрос задан
  • 21 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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