如何为NPM项目编写自己的终端命令,该命令将取代gulp
命令而不依赖于npm run
?
我的项目包含以下Gulp和http-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
命令答案 0 :(得分:3)
我通常通过使用commander编写一个小CLI然后在指向CLI文件的bin
中添加package.json
条目来执行此操作。
{
...
"author": "",
"license": "ISC",
"bin":{
"boom": "boom-cli.js"
...
}
然后从项目的根目录运行npm install -g
或npm 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
...