【问题标题】:How do I create a custom command to replace `gulp` or `npm run`?如何创建自定义命令来替换 `gulp` 或 `npm run`?
【发布时间】:2018-10-15 19:09:12
【问题描述】:

我如何为 NPM 项目编写自己的终端命令,从而在不依赖 npm run 的情况下替换 gulp 命令?

我的项目包含以下Gulphttp-server 自定义命令...

## COMMANDS I CURRENTLY HAVE
|        Command        |            Task             |
|-----------------------|-----------------------------|
|      npm run boom     | "Builds then watches files" |
| npm run boom -- build |  "Builds the assets files"  |
|    npm run launch     |   "Starts a local server"   |

这是因为其package.json 文件中的scripts...

/// package.json
{
  "scripts": {
    "boom": "gulp",
    "launch": "http-server -o"
  },
    "devDependencies": {
      "gulp": "^3.9.0",
      "gulp-sass": "^2.1.0",
      "http-server": "^0.8.5"
    }
}

这是我真正想要的自定义命令...

## COMMANDS I WANT TO HAVE
|   Command   |            Task             |
|-------------|-----------------------------|
|    boom     | "Builds then watches files" |
| boom build  |  "Builds the assets files"  |
| boom launch |   "Starts a local server"   |

编辑

"Can I add a debug script to NPM?" 与我所问的相同。我已经在 package.json 文件中定义了脚本,这就是我最终使用当前命令的方式。我想要的是编写我自己的项目命令/脚本,这些命令/脚本与我列出的内容相同,而无需输入npm run

例子

  • 我目前拥有
    • npm run boom 命令
  • 它有什么作用?
    • 运行gulp 命令
  • 我希望在项目中使用什么命令,而不是做同样的事情?
    • boom 命令

【问题讨论】:

  • 我不确定是否在 npm 中执行此操作,但根据您的操作系统,您可以添加自定义命令以通过命令提示符/终端运行。
  • @ItsGreg - 我可以为其创建别名,这将应用于我的命令提示符,但我希望这些命令能够在本地为决定使用该项目的任何人工作。
  • 没有“简单”的方法来做到这一点。你必须创建一个 npm 包并将你的命令放在它下面,然后像任何其他包一样安装它。 This link give details 正在接近。

标签: node.js npm gulp gulp-sass package.json


【解决方案1】:

我通常通过使用 commander 编写一个小型 CLI,然后在指向 CLI 文件的 package.json 中添加一个 bin 条目来做到这一点。

    {
      ...
      "author": "",
      "license": "ISC",
      "bin":{
        "boom": "boom-cli.js"
      ...
    }

然后从项目的根目录运行npm install -gnpm link -g

如果我没记错的话,npm link -g 在您的包和保存全局安装的 npm 包的地方之间创建了一个符号链接,这对我来说更可取,因为我喜欢经常更改。

This 是该主题的好资源。

【讨论】:

    【解决方案2】:

    只运行npm install 并没有帮助我。需要运行npm link,它帮助我运行 CLI 命令。

    npm link 在输出中创建如下别名: 例子 : $LOCAL_DIR\cli-command -> $LOCAL_DIR\npm\node_modules\$PROJECT\dist\index.js ...

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2018-09-06
      • 1970-01-01
      • 2011-10-22
      • 2015-12-30
      • 2015-11-05
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多