Javascript 当存储在对象中时,如何从模板文本中删除空白?

Javascript 当存储在对象中时,如何从模板文本中删除空白?,javascript,template-literals,Javascript,Template Literals,我正在用node创建一个样板项目 最基本的是,当我运行node create.js projectName时,我想创建一个包含大量资产的项目文件夹 这是一段代码: function data(){ return { 'index.html': `<!DOCTYPE html> <html lang="en"> <link rel="stylesheet" type=

我正在用node创建一个样板项目

最基本的是,当我运行
node create.js projectName
时,我想创建一个包含大量资产的项目文件夹

这是一段代码:

function data(){
    return {
        'index.html': `<!DOCTYPE html>
        <html lang="en">
           <link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />
        ...
        <body> <script src="myscripts/main.js"></script> </body>
        </html>`,
    }
}
我删除了很多不相关的代码,但生成的
index.html
中的点如下所示

<!DOCTYPE html>
        <html lang="en">
        ...
        <body> <script src="myscripts/main.js"></script> </body>
        </html>

...

如何删除第2-5行开头的空白,而不“丑化”我正在
数据
函数中写入的对象?

您可以使用正则表达式删除行开头的空白

fs.writeFileSync(`${p[0]}/index.html`, data()['index.html'].replace(/^\s+/gm, '');

<代码> M< /Cult>标志使^ /Cord>匹配输入字符串中间的换行符,而不是字符串的开头。

另一个选项是在模板文本中使用所需的缩进

function data(){
  return {
    'index.html': `
<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />
    ...
  </head>
  <body> <script src="myscripts/main.js"></script> </body>
</html>`,
  }
}
函数数据(){
返回{
'index.html':`
...
`,
}
}
这看起来不像是“取消”它。

试试这个

function replace(str) {
         return str.replace(/^([ ]*)/gim, "");
    }

更像是这样。谢谢,有没有办法保留一些缩进?如果您看看我刚才添加的内容,例如在
标记下,您将有一个到样式表的
链接,该链接将缩进/嵌套。如果你想让缩进与HTML标记嵌套级别相匹配,那就太复杂了。为什么不首先将所需的嵌套放在模板文本中?为什么你认为“丑化”它,因为它在代码中看起来是正确的。是的,这就是我最终要做的,但是我只是认为我可以在保持物体看起来“干净”的同时得到这种效果。
function replace(str) {
         return str.replace(/^([ ]*)/gim, "");
    }