Чтение файлов, обработка данных и возврат к другим файлам с помощью Promise в JavaScript - PullRequest
1 голос
/ 25 мая 2019

То, что я хочу сделать, это заменить doczrc.js базовое значение с abc на имя, которое я получаю от .git/config.Поэтому мне не нужно вручную менять базу в doczrc.(Для тех, кто разветвляет репо, они должны сами изменить его, и у него возникнут проблемы с передачей и пиаром родительского репо.) Поэтому мне нужно написать скрипт для изменения имени для построения страницы.

Я хочу прочитать владельца репо из '.git / config'.

...
[remote "origin"]
    url = git@github.test.result/test.git
    fetch = +refs/heads/*:refs/remotes/origin/*
...

У меня есть другой файл, который используется для создания страницы документации github.Файл конфигурации экспортирует объект.

export default {
  ...
  base: `/pages/abc/test`
  ...
}

Я использовал readfilesync, но мне не разрешено использовать readfilesync.Затем я попытался readfile, это асинхронно, и я использую обещание.Однако я не могу получить ценность от обещания.Из онлайн-учебника это все console.log.Но мне нужно получить точное значение и вернуться к другому файлу для использования.

Я пробовал способ ниже, изменил экспорт по умолчанию на объект и заменил базу.Тем не менее, он по-прежнему экспортирует abc вместо значения, которое я хочу.Есть ли способ, которым я могу решить эту проблему?

// script.js
const remote = 'origin'
const file = '.git/config'
function readConfig() {
  return new Promise((resolve, reject) => {
    const regex = /:(\S+)\//gm
    try {
      fs.readFile(configFile, (err, data) => {
        if (err) {
          console.log(err.stack)
        }
        let result = regex.exec(data.toString())
        resolve(result[1])
      })
    }
    catch (err) {
      console.log(err)
      reject(err)
    }
  })
}

// readConfig could get the value I want. This value is what I want to send to script.js, which is to replace t
readConfig().then(x => console.log(x))
ghPages.publish('.gh-pages', { remote }, err => {
 if (err) {
   console.error(error .')
   console.error(err)
 } else {
   console.info('success')
 }
})

module.exports = {
  readConfig,
}
// script.js
// I tried to change script.js in this way instead of just call the function 
`/pages/{readConfig()}/test`

import { readConfig } from './doczrc'

const exportObj = {
  base: `/pages/abc/test`
}

readConfig().then(res => {
  exportObj.base = '/pages/' + res + '/test/'
})

export default exportObj

Я хочу экспортировать '/ pages /' + (значение, которое я прочитал из конфигурации) + / test /

команда run

npm run docs:build && node script.js, которая doczrc.js является файлом конфигурации для сборки doc.script.js - это скрипт, который я использую для обновления значения в базе script.js.и опубликуйте страницу github.


измените имя файла на более значимое.doczrc.js (оригинал - a.js) script.js (оригинал - b.js)

Или есть другой способ решить мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...