包裹监视仅检测到第一个文件更改

时间:2019-03-30 18:36:36

标签: parceljs

我在./js/parcel/build-js.js中具有以下内容(它或多或少地简化了API docs example的工作,只是它带有一个可选的--watch参数):

#!/usr/bin/env node

const Bundler = require('parcel-bundler');
const path = require('path');

const watch = process.argv.indexOf('--watch') > 0;

if (watch) console.log('Watching files...');

(async function bundleJs() {
  const jsBundler = new Bundler(path.join(__dirname, '../src/common.js'), {
    watch,
    hmr: false,
  });

  jsBundler.on('bundled', () => {
    console.log('bundled!');
  });

  const bundle = await jsBundler.bundle();

  console.log('done');
})();

当我运行node js/parcel/build-js.js --watch时,它将检测到对src/common.js的首次更改并打印:

Watching files...
✨  Built in 585ms.
bundled!
done

这是我所期望的。当我编辑并保存src/common.js时,它会看到然后总输出变为(done被删除):

Watching files...
✨  Built in 585ms.
bundled!
✨  Built in 86ms.
bundled!

但是在那之后,没有检测到文件更改。我进行了更改并保存,但它只位于此处,不再产生任何输出或更新内部版本。为什么只有一次?

注意:如果我做strace node js/parcel/build-js.js --watch,似乎只是坐在未完成的epoll_wait(3,上,我想这意味着它正在等待某些内容,但可能是看错了文件...

编辑:版本!

  • 包裹捆扎机:1.12.3
  • 节点:10.15.1
  • Ubuntu 18.04

编辑:使用parcel watch

对我来说,这似乎是系统范围的事情。我做了yarn globals add parcel(还安装了1.12.3),现在用parcel watch path/to/file.js观看任何 JS文件也可以完成同样的工作。

2 个答案:

答案 0 :(得分:0)

原来是Vim问题。来自Hot Module Replacement docs

  

某些文本编辑器和IDE具有称为安全写入的功能,该功能可以通过复制文件并在保存时重命名来基本上防止数据丢失。

     

使用热模块重载(HMR)时,此功能会阻止自动检测文件更新,请使用以下提供的选项禁用安全写入:

我在set backupcopy=yes中添加了.vimrc,它开始工作。

这里也记录了其他编辑器的解决方案。

答案 1 :(得分:0)

这是包裹问题!我掉了(直到他们解决了) 恕我直言:我不必为了使捆绑程序正常工作而更改编辑器的行为。 (在这种情况下,webpack可以正常工作)