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

时间:2016-04-24 21:15:38

标签: javascript node.js npm nodemon babel

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

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

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

6 个答案:

答案 0 :(得分:6)

您只需使用babel-node运行代码即可避免显式转换。

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

似乎this is the recommended方式将nodemon用于babel

请注意,在--exec

远程运行development环境时,运行localhost 会产生意想不到的副作用

答案 1 :(得分:1)

   override func layoutSubviews() {
    super.layoutSubviews()
    progressView.cornerRadius = cornerRadius
    clipsToBounds = true
    addSubview(progressView)
    NSLayoutConstraint.activate([
        progressView.topAnchor.constraint(equalTo: topAnchor),
        progressView.bottomAnchor.constraint(equalTo: bottomAnchor),
        progressView.centerXAnchor.constraint(equalTo: centerXAnchor)
    ])
    let width = frame.width
    let finalProgress = CGFloat(progress) * width
    let widthConstraint = progressView.widthAnchor.constraint(equalToConstant: finalProgress)
    widthConstraint.priority = UILayoutPriority(rawValue: 999)
    widthConstraint.isActive = true
}

Serve用于生产,使用npm start进行的工作是先进行转换,然后运行nodemon。

答案 2 :(得分:1)

有一个选项可以在“监视”模式下使用Babel构建文件,让Nodemon仅监视“构建”文件夹,并在更改编译输出后重新启动应用程序。

{
  "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"
  }
}

enter image description here

此示例摘自GitHub上的GraphQL API Examples存储库。

答案 3 :(得分:1)

  "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/"
  }

然后运行npm run watch。此后,每次修改源代码(.js文件)时,nodemon将重建项目,然后重新启动服务器。

--exec指定在文件更改时希望nodemon执行的非节点脚本(也适用于node lib/index.js以上的节点脚本)。

-e指定您希望nodemon观看哪些文件扩展名。

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

答案 4 :(得分:0)

更好的选择是不使用全局安装,而是使用本地安装的软件包。这也有助于自动化构建,可能与每个12因素应用程序设计的本地机器设置相同。

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

}

答案 5 :(得分:0)

您可以有两个nodemon,一个用于编译,另一个用于运行代码。在package.json中,您可以执行以下操作:

"scripts": {
    "serve": "nodemon --watch dist/ ./dist/index.js",
    "build" : "nodemon --watch src/ --exec babel ./src --out-dir ./dist --source-maps --copy-files"
  },