parcel watch 仅检测第一个文件更改
parcel watch only detects first file change
我在 ./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
看 any JS 文件做同样的事情。
原来是 Parcel 的更改检测与默认 Vim 设置之间存在冲突。来自 Hot Module Replacement docs:
Some text editors and IDE's have a feature called safe write that basically prevents data loss, by taking a copy of the file and renaming it when saved.
When using Hot Module Reload (HMR) this feature blocks the automatic detection of file updates, to disable safe write use the options provided below:
我将 set backupcopy=yes
添加到我的 .vimrc
并且它开始工作了。
那里也记录了其他编辑器的解决方案。
包裹问题!我把它丢了(直到他们修好了)
恕我直言:我不必为了使捆绑器正常工作而改变我的编辑器的行为。 (webpack 在这种情况下工作正常)
我在 ./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
看 any JS 文件做同样的事情。
原来是 Parcel 的更改检测与默认 Vim 设置之间存在冲突。来自 Hot Module Replacement docs:
Some text editors and IDE's have a feature called safe write that basically prevents data loss, by taking a copy of the file and renaming it when saved.
When using Hot Module Reload (HMR) this feature blocks the automatic detection of file updates, to disable safe write use the options provided below:
我将 set backupcopy=yes
添加到我的 .vimrc
并且它开始工作了。
那里也记录了其他编辑器的解决方案。
包裹问题!我把它丢了(直到他们修好了) 恕我直言:我不必为了使捆绑器正常工作而改变我的编辑器的行为。 (webpack 在这种情况下工作正常)