我有一个用Typescript写的nodejs项目。因此,我让webpack使用了一个typescript加载器,它将我的代码转换为Javascript,并将其捆绑在server.js文件中(在dist文件夹中)。
在开发环境中,我的webpack运行时其监视器为ON,nodemon也是如此。
问题是,当我第一次结合webpack和nodemon启动我的脚本时,由于webpack处于监视模式,它没有一个退出代码说一切正常,nodemon脚本可以启动。如果我同时运行它们,nodemon将比webpack启动得更快,因为server.js文件还不存在,它将在启动时崩溃。
我想启动感谢一个单一的命令两个脚本,但使nodemon命令等待捆绑完成。
3条答案
按热度按时间plupiseo1#
首先,当提交问题时请提供一些代码。
and since server.js file doesn't yet exist
我觉得你应该在你的设置周围工作一点。如果你想这么做,webpack不会创建你的server.js文件。
基本上,你可以在一个脚本中链接多个命令,比如
webpack -d && nodemon index.js
。这将在webpack完成后启动node。但是如果你在watch模式下设置webpack-w
,它永远不存在,所以你不能链接其他命令。所以webpack -d -w && nodemon index.js
永远不会到达nodemon
部分。上面的一个解决方案是只使用
&
来链接它们,我猜你正在这样做,但是通过这种方式,它们都同时启动。因此,如果你让你的设置独立(webpack不会干扰nodemon启动脚本),你可以像这样列出它们。如果出于某种原因,你不能这样做或不想这样做,你唯一的选择是与2个单独的脚本,你手动启动一个接一个。
hrirmatl2#
如果我是你,我会用nodemon-webpack-plugin:
使用Nodemon来监视和重启模块的输出文件,但仅当webpack处于监视模式(即--watch)时。
节省了安装,配置和运行Nodemon作为一个单独的过程的需要。
kcrjzv8t3#
如果您并行运行所有内容,则不能让nodemon等待构建。如果您正在观察变化,这会变得更加复杂-在这种情况下,nodemon将永远不会被调用。
你需要做的是检查构建是否在那里,并在通过nodemon运行应用程序之前将if else逻辑应用于构建脚本。您可以使用path-exists包进行此检查。它将提供标准的bash行为:
如果你不想使用path-exists,而你使用的是linux like system,你可以用下面的命令替换它:
示例:
此条件&&成功||失败是在类Linux环境中处理bash脚本的典型方式。
我在一个更复杂的环境中使用它,我们将开发,站点,应用程序和服务器组合成单个monorepo,其中一些脚本必须与webpack中的监视标志并行运行,这将导致其中一个答案中提到的脚本挂起。请使用此作为参考:
我希望这是有帮助的!:D