Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在npm脚本中使用nodemon来构建和启动脚本?_Javascript_Node.js_Npm_Nodemon_Babeljs - Fatal编程技术网

Javascript 如何在npm脚本中使用nodemon来构建和启动脚本?

Javascript 如何在npm脚本中使用nodemon来构建和启动脚本?,javascript,node.js,npm,nodemon,babeljs,Javascript,Node.js,Npm,Nodemon,Babeljs,使用命令npm run watch会导致运行以下错误命令:[nodemon]启动“npm lib/index.js run build” 如何编写一个nodemon命令,在重新加载时,使用babel传输代码并重新加载代码?您可以简单地使用babel节点运行代码,以避免显式传输 "scripts": { "build": "babel src -d lib", "start": "node --use_strict ./lib/index.js", "watch": "nodemon

使用命令npm run watch会导致运行以下错误命令:
[nodemon]启动“npm lib/index.js run build”


如何编写一个nodemon命令,在重新加载时,使用babel传输代码并重新加载代码?

您可以简单地使用
babel节点运行代码,以避免显式传输

"scripts": {
  "build": "babel src -d lib",
  "start": "node --use_strict ./lib/index.js",
  "watch": "nodemon lib/index.js --exec npm run build"
}
这似乎是将
nodemon
babel
一起使用的一种方式


请注意,远程运行
--exec
本地主机的
开发
环境时,运行
--exec可能会产生意想不到的副作用,更好的选择是不使用全局安装,而是使用本地安装的软件包。这也将有助于根据12因素应用程序设计将自动化构建设置为与本地计算机相同

$ nodemon lib/index.js --exec babel-node --presets=es2015,stage-2

}

您可以有两个节点节点,一个用于传输,另一个用于运行代码。在package.json中,您可以执行以下操作:

"scripts": {
"watch": "node ./node_modules/nodemon/bin/nodemon.js"

Serve用于生产,使用npm start,您要做的是先传输文件,然后运行nodemon。

有一个选项可以使用Babel在“监视”模式下生成文件,让nodemon只监视“构建”文件夹,并在编译输出发生更改时重新启动应用程序

"scripts": {
  "build": "babel src -d lib",
  "start": "nodemon --exec babel-node lib/index.js",
  "serve": "npm run build && node lib/index.js"
}

此示例取自GitHub上的存储库

{
  "name": "app",
  "version": "1.0.0",
  "private": true,
  "dependencies": {},
  "devDependencies": {
    "@babel/cli": "^7.6.0",
    "@babel/core": "^7.6.0",
    "@babel/preset-env": "^7.6.0",
    "nodemon": "^1.19.2"
  },
  "scripts": {
    "build": "babel src --out-dir build --source-maps=inline --verbose",
    "start": "yarn build --watch & sleep 1 && nodemon --watch build build/index.js"
  }
}
然后运行
npm run watch
。在此之后,nodemon将重建项目,然后在每次修改源代码(
.js
文件)时重新启动服务器

--exec
指定在发生文件更改时希望nodemon执行的非节点脚本(也适用于上述节点脚本
节点库/index.js

-e
指定要节点监视的文件扩展名


--ignore
指定要nodemon忽略的文件/目录。此选项对于解决此问题至关重要,因为如果您不指定忽略此
lib/
文件夹,nodemon将无限重新启动,因为
lib/
中的编译文件也是
.js
文件。

运行babel node需要安装什么软件包?NPM说babel节点不在存储库中,即使我已经通过NPM安装了babel cli,但运行给定的命令说babel节点不可用。
babel cli
是正确的。您应该全局安装它,或者将执行路径更改为
/node\u modules/.bin/babel node
。我在项目中全局和本地安装了
babel cli
,并收到以下错误。您正在尝试将babel节点作为npm脚本运行,就像package.json中声明的那样。你可以找到一个有效的例子。哎哟,那是我的错误,对不起。我已经修复了答案。请您进一步解释一下。不要在cli中全局使用nodemon,而是使用上面的代码,您可以在npm脚本或cli cmd中使用--save或--save dev、node./node\u modules/nodemon/bin/nodemon.js调用本地安装的包。还要添加您需要传递的任何参数。基本上不是使用全局标识符调用它,而是直接从解决方案结构中调用。这有助于您的团队,因为他们都将使用相同的版本,如果包在一段时间内全局安装在多个工作站上,那么版本很可能会不同。
{
  "name": "app",
  "version": "1.0.0",
  "private": true,
  "dependencies": {},
  "devDependencies": {
    "@babel/cli": "^7.6.0",
    "@babel/core": "^7.6.0",
    "@babel/preset-env": "^7.6.0",
    "nodemon": "^1.19.2"
  },
  "scripts": {
    "build": "babel src --out-dir build --source-maps=inline --verbose",
    "start": "yarn build --watch & sleep 1 && nodemon --watch build build/index.js"
  }
}
  "scripts": {
    "build": "babel src -d lib",
    "start": "node --use_strict ./lib/index.js",
    "watch": "nodemon --exec \"npm run build && node lib/index.js\" -e js --ignore lib/"
  }