【问题标题】:Analog `fs.readdirSync` node.js without recursive没有递归的模拟`fs.readdirSync`node.js
【发布时间】:2018-05-09 16:00:21
【问题描述】:

我尝试只将 html 文件放入我的文件夹。但是我的代码将所有文件夹放入我的根文件夹并返回结果给我。我只想获取.html 文件。

我的结构项目

src folder folder2 index.html inner.html

我只需要index.htmlinner.html 我的代码:

function generateHtmlPlugins(templateDir) {
  const templateFiles = fs.readdirSync(join(rootDir, templateDir));

  return templateFiles.map(item => {
    const parts = item.split('.');
    const name = parts[0];
    const extension = parts[1];

    return new HtmlWebpackPlugin({
      filename: `${name}.html`,
      template: join(rootDir, `./${templateDir}/${name}.${extension}`),
      inject: false
    });
  });
}

const htmlPlugins = generateHtmlPlugins('./src');

请帮我只将.html 文件发送到我的函数中

【问题讨论】:

  • 你只需要添加一个条件,比如if(extension === 'html')...你也应该使用filter而不是map
  • @Hackerman 我尝试使用if (extension === html),但我收到错误TypeError: arguments[i].apply is not a function
  • @Hackerman 感谢过滤器。这项工作
  • 很高兴帮助@Aleksandr

标签: node.js webpack html-webpack-plugin


【解决方案1】:

你需要在map之前过滤你的文件

function generateHtmlPlugins(templateDir) {
  const templateFiles = fs.readdirSync(join(rootDir, templateDir));
  const htmlFiles = templateFiles.filter(item => item.split('.')[1] === 'html');

  return htmlFiles.map(item => {
    const parts = item.split('.');
    const name = parts[0];
    const extension = parts[1];

    return new HtmlWebpackPlugin({
      filename: `${name}.html`,
      template: join(rootDir, `./${templateDir}/${name}.${extension}`),
      inject: false
    });
  });
}

const htmlPlugins = generateHtmlPlugins('./src');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多