внедрить HTML-фрагмент со сценариями npm при сборке - PullRequest
1 голос
/ 07 мая 2019

У меня есть папка src и папка public. В папке src есть много подпапок, каждая из которых имеет index.html. В npm run build каждая папка копируется из src в public.

Я хочу иметь скрипт npm, который просматривает каждый файл index.html и вставляет фрагмент html в тело, как div с логотипом.

У меня есть netlify, делающий это прямо сейчас, но я хотел бы включить это в мой этап сборки, а также хотел бы избежать использования gulp. Любое направление будет оценено, спасибо.

1 Ответ

0 голосов
/ 10 июня 2019

Это частично сработало, для моего использования, где мне просто нужно прочитать каталог public и один слой подкаталогов.Но я не могу получить доступ к переменной subDirectories вне функции addSnippetToIndexes fs.Есть идеи?Я попробовал обратный звонок ниже, без игры в кости.Я настоящий узел n00b.

const fs = require('fs');

const logo = '<div id="logo"><h1>my cool logo</h1></div>'
let subDirectories = []

function addSnippetToIndexes(directory){
    fs.readdir(directory, (err, files) => {
        if (err) {return console.log(err);}
        files.forEach(file => {
            if(file.substr(-5) === '.html'){
                fs.readFile(directory+file, 'utf8', function (err,data) {
                    if (err) {return console.log(err);}
                    let result = data.replace(/\<\/body>/g, logo + '</body>');
                    fs.writeFile(directory+file, result, 'utf8', function (err) {
                       if (err) return console.log(err);
                    });
                  });   
            }else{
                subDirectories.push(file)
            }
         });
         //I can access subDirectories here but not outside function?
    });
}
addSnippetToIndexes('./public/')
subDirectories.forEach(i => {addSnippetToIndexes(i)}) //THIS DOESNT WORK?
...