电子重载不会检测子目录中的文件更改

时间:2018-03-02 13:52:05

标签: javascript node.js electron

所以我是JS世界和电子的新手。我有以下结构

root
|-html
    |-- index.html
    |-- others
         |-- other.html
|-js
   |--main
       |-- main.js
   |--render
       |-- render.js
|-css
|-images
|-node_modules
|-others

我有一个hello world电子应用程序。 现在我想在代码更改时重新加载应用程序/窗口。为此我使用electron-reload 当我有main.js,render.js,index.html基本上所有根电子重载工作正常。 但是当我将文件移动到上面的结构时,它无法重新加载。 这是我的电子重装配置

require('electron-reload')([
                          __dirname, 
                          '${__dirname}/../../html/**/*.html',
                          '${__dirname}/../../js/**/*.js',
                          '${__dirname}/../../css/**/*.css'
                        ], {
                          electron: require('${__dirname}/../../node_modules/electron')
      });

请注意我不是专家用水晶模式,所以想法是 -

  • 目录和子目录中的所有JS - > ** / *。JS
  • 中的所有HTML 目录和子目录 - > ** / *。HTML
  • 目录中的所有CSS和 子目录 - > ** / *。CSS

如果有人能指出我正确的方向,我将不胜感激

我在Windows 10上 这是我的package.json内容

  "dependencies": {
    "electron": "^1.8.2",
    "electron-reload": "^1.2.2"
  }

1 个答案:

答案 0 :(得分:-1)

我在不使用任何外部依赖项的情况下编写了一个简单的实现:

function decounce(func, ms) {
    let ts;
    return function() {
        clearTimeout(ts);
        ts = setTimeout(() => func.apply(this, arguments), ms);
    };
}

if (process.env.NODE_ENV !== 'production') {
    const fs = require('fs');

    fs.watch(
        path.resolve('./electron-build'),
        { encoding: 'buffer' },
        decounce((eventType, filename) => {
            win && win.reload();
        }, 50)
    );
}

winBrowserWindow

的一个实例