如何创建自定义命令来替换`gulp`或`npm run`?

时间:2016-01-22 22:53:34

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

如何为NPM项目编写自己的终端命令,该命令将取代gulp命令而不依赖于npm run

我的项目包含以下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"   |

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

/// 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命令

2 个答案:

答案 0 :(得分:3)

我通常通过使用commander编写一个小CLI然后在指向CLI文件的bin中添加package.json条目来执行此操作。

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

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

如果我没记错的话,npm link -g会在您的软件包和全局安装的npm软件包之间创建一个符号链接,这对我来说更合适,因为我喜欢经常更改内容。

This是该主题的一个很好的资源。

答案 1 :(得分:0)

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

npm link在以下输出中创建别名的地方: 范例: $LOCAL_DIR\cli-command -> $LOCAL_DIR\npm\node_modules\$PROJECT\dist\index.js ...