包裹实时重新加载不适用于简单的html

时间:2019-01-23 16:36:05

标签: parceljs

我正在学习包裹js。在文档中,描述了实时重新加载。

  

https://parceljs.org/getting_started.html

我怀疑当我更改HTML文件的内容时,会看到我的网站正在重新加载,并且将重建一个项目。


如何重现该错误?

我键入了两个bash脚本:

  

prepare.sh

#!/usr/bin/env bash

HTML="<html><body>1</body></html>";

echo ${HTML} > index.html;

它创建了最简单的HTML文件。

1)运行此脚本bash prepare.sh

2)现在在第二个终端中运行包裹。

parcel index.html --no-cache --no-hmr --log-level 5

然后创建一个脚本进行主要测试:

  

test.sh

#!/usr/bin/env bash

HTML="<html><body>1</body></html>";

echo ${HTML} > index.html;


# I checking if html served by parcel contains 1, it should and conatin
if [[ $(curl -s localhost:1234 | grep 1 | wc -l) -eq 1 ]]; then
    echo "GREAT when the index is replaced project is rebuilt";
else
    echo "WRONG";
fi

# I replacing 1 inside of a body tag to 12 
perl -pi -e 's/1/12/g' index.html

echo "waiting 1 second for the rebuild...";
sleep 1;

# I checking if html served by parcel contains 2, it should but not conatin 
if [[ $(curl -s localhost:1234 | grep 2 | wc -l) -eq 1 ]]; then
    echo "GREAT";
else
    echo "WRONG but when I only modified file project parcel did not see it";
fi

所以。我再次创建HTML文件(替换它),然后可以看到构建过程已被调用。但是,当我只修改body标记内的文件更改字符串时,什么也没发生。包裹服务器未检测到它。

1 个答案:

答案 0 :(得分:1)

--no-hmr flag禁用both HMR and any type of reloading对于您问题中的简单HTML,只需删除--no-hmr标志即可。

但是,通过JS修改的更复杂的HTML中可能会出现意外的副作用。有一个pull request to add a --reload flag,但从未合并。您可以尝试根据PR修改自己的包裹,也可以尝试implement普通reload的货叉之一。