我正在使用Nodemon和Babel 6.我已经全局卸载了Nodemon并安装了最新版本。
我在我的npm脚本中尝试了以下两行:
"watch-new": "nodemon src/index.js --exec babel -w src/ -d build/ --source-maps"
和
console.log("Hello, World!");
正在运行的babel的变化似乎导致类似/相同的与nodemon相关的混乱。
我开始使用一个只包含console.log("Test");
的文件,然后在包含int** m = new int*[input];
的语句后添加一行。保存(仅一次)现在的两行文件导致以下控制台输出。
将以下任一项添加到nodemon使我的程序只重启一次" - 延迟2.5"或" -L" /" - legacyWatch"
为什么它会这么多次运行和重装?
答案 0 :(得分:0)
我发现nodemon
,babel
和其他观察者类型程序的组合通常会奇怪地互动。这种"双跑"结果非常普遍。设置就是这样时它们工作得很好,但可能很脆弱。
那就是说,我不明白你选择的命令行参数。我不会说他们错了,但他们不符合我安装的babel
版本或我使用的文档。推荐使用Babel的方法有了显着的变化;并非所有互联网上的文档都是最新的,最新的方法。
所以,不要试图调试你的配置中没有的东西,让我给你一个 为我工作的配置。
首先我安装了Babel及其预设:
npm install --save-dev babel-cli babel-preset-es2015
然后是package.json
中的npm脚本:
"watch-new": "nodemon src --exec babel --presets es2015 -w src/ --out-dir build/ --source-maps"
(您可以使用其他预设。我只使用较大的预设,ES2015。)
我针对源目录而不是单个源文件调用nodemon
,而不是babel
在src
下嵌套build
;我假设您需要.js
中的单个build
文件,而不是src
子目录。我也使用--out-dir
选项,我理解这是正确的(不是-d
)。
最后,运行它:
npm run watch-new
这些包和脚本调用为我提供了正确的,每次更改一次的重新运行行为。如果您希望node
在转换后立即运行代码而不是将其保存在build/
下,则可以将--exec babel
更改为--exec babel-node
并删除--out-dir
规范。
最后一点,你的问题被标记为ECMAscript-6。以前被称为es6
的内容现在更正式地称为es2015
。 (例如this primer on the new version names。)如果您使用新的es2015
字词进行搜索,则您更有可能获得正确的最新文档。