在构建时注入带有npm脚本的html代码段

时间:2019-05-07 20:10:05

标签: code-snippets inject npm-scripts

我有一个src文件夹和一个public文件夹。 src文件夹有许多子文件夹,每个子文件夹都有一个index.html。在npm run build上,每个文件夹都从src复制到public

我想要一个npm脚本来查找每个index.html文件,并在正文中插入一个html代码段,例如带有徽标的div。

我现在已经netlify这样做了,但是我想将其合并到我的构建步骤中,并且还希望避免使用gulp。任何方向将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

我做了部分工作,因为我的用途是只需要阅读public目录和一层子目录。但是,我似乎无法在addSnippetToIndexes fs函数外部访问subDirectories变量。有任何想法吗?我在下面尝试了回调,没有骰子。我是一个真正的节点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?