【问题标题】:Output to command line within npm scripts?在 npm 脚本中输出到命令行?
【发布时间】:2020-04-12 06:40:25
【问题描述】:

我的 package.json 中有一个包含以下代码的脚本:

 "scripts": {
    "build": "postcss tailwind/tailwind.css -o css/cenic.tailwind.css",
    "watch": "postcss tailwind/tailwind.css -o css/cenic.tailwind.css --watch"
  },

它工作正常 - 但我如何让它将文本输出到命令行,比如

script ran at {{ date(now) }}

换句话说,我想在脚本运行时看到通知。

【问题讨论】:

  • 感谢@RobC。这就是我的想法。对于脚本的 --watch 部分,有没有办法在脚本运行时将输出输出到命令行?

标签: npm command-line-interface package.json


【解决方案1】:

跨平台(Windows/Linux/macOS...)

您可以执行以下操作来记录脚本开始其任务的日期/时间:

"build": "node -e \"console.log('script started at: %s', Date())\" && postcss tailwind/tailwind.css -o css/cenic.tailwind.css"

说明:

  1. && 运算符左侧读取的部分;

    node -e \"console.log('script started at: %s', Date())\"
    
    • 利用 nodejs 命令行选项 -e 来评估内联 JavaScript。
    • 内联脚本使用 JavaScript 的 console.log(...)Date()
  2. && 运算符右侧的命令是您要运行的任何命令,在您的场景中是 postcss 命令。

变化:

  • 要为日志着色,您可以添加一些ANSI/VT100 Control sequences。例如:

    "build": "node -e \"console.log('%sscript started at: %s%s', '\\x1b[42;30m', Date(), '\\x1b[0m' )\" && postcss tailwind/tailwind.css -o css/cenic.tailwind.css"
    
  • 要记录 npm 脚本何时完成而不是启动,您可以切换命令的顺序。例如:

    "build": "postcss tailwind/tailwind.css -o css/cenic.tailwind.css && node -e \"console.log('script completed at: %s', Date())\""
    

仅限 Nix 平台(Linux/MacOS...)

如果您只想要在 *nix 平台上运行的解决方案,那么您可以改为执行以下操作:

"build": "echo \"script started at: $(date)\" && postcss tailwind/tailwind.css -o css/cenic.tailwind.css"

说明:

  1. && 运算符左侧的部分内容为:

    echo \"script started at: $(date)\"
    
  2. && 运算符右侧的命令是您要运行的任何命令,在您的场景中是 postcss 命令。

如果你想对echo命令应用视觉样式,请参考我的回答here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2023-01-17
    • 2020-08-04
    • 2017-05-10
    • 2018-03-29
    相关资源
    最近更新 更多