我在./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,
上,我想这意味着它正在等待某些内容,但可能是看错了文件...
编辑:版本!
编辑:使用parcel watch
对我来说,这似乎是系统范围的事情。我做了yarn globals add parcel
(还安装了1.12.3),现在用parcel watch path/to/file.js
观看任何 JS文件也可以完成同样的工作。
答案 0 :(得分:0)
原来是Vim问题。来自Hot Module Replacement docs:
某些文本编辑器和IDE具有称为安全写入的功能,该功能可以通过复制文件并在保存时重命名来基本上防止数据丢失。
使用热模块重载(HMR)时,此功能会阻止自动检测文件更新,请使用以下提供的选项禁用安全写入:
我在set backupcopy=yes
中添加了.vimrc
,它开始工作。
这里也记录了其他编辑器的解决方案。
答案 1 :(得分:0)
这是包裹问题!我掉了(直到他们解决了) 恕我直言:我不必为了使捆绑程序正常工作而更改编辑器的行为。 (在这种情况下,webpack可以正常工作)