我不确定甚至搜索这个问题的正确词汇是什么,但我可以提到一些实现我试图拿起的模式的包:
shx
cross-env
npm-run
安装任何这些软件包后,都可以通过CLI使用它们。例如,我将cross-env
作为新项目的依赖项安装后,我可以在package.json
中创建一个npm脚本,如"start": "cross-env NODE_ENV=production webpack"
我检查了这些项目的package.json
个文件,他们都使用了bin
字段,但是如果我初始化一个本地项目(npm init
)并添加一个bin字段,那么它就没有#39} ;即使在运行npm install
之后,也可以在命令行中识别它。
那么我怎样才能获得相同的功能呢?如果问题清楚或我是否应该添加其他信息,请告诉我。
我的package.json
位于以下位置:
{
"name": "sloth-cli",
"version": "1.0.0",
"description": "a dead simple Chron cli tool for Node",
"bin": {
"sloth": "node ."
},
"main": "index.js",
"scripts": {
"start": "node ."
},
"repository": {
"type": "git",
"url": "git+https://github.com/Vandivier/sloth.git"
},
"keywords": [
"chron"
],
"author": "John Vandivier",
"license": "MIT",
"bugs": {
"url": "https://github.com/Vandivier/sloth/issues"
},
"homepage": "https://github.com/Vandivier/sloth#readme"
}
答案 0 :(得分:1)
我最终发现了答案并让sloth-cli
工作了。 bin
中的package.json
确实是关键,但在定义bin之后,我们必须在本地运行npm link
。
此外,bin
的内容不能包含典型的npm脚本语法。它必须引用一个设置为在CLI上下文中执行的文件。这可以像在{j}文件的顶部添加#! /usr/bin/env node
一样简单。
将包发布到npm后,将其作为依赖项安装的人不需要运行npm link
。 Npm处理那部分。以下是package.json
的当前工作sloth-cli
:
{
"name": "sloth-cli",
"version": "1.0.2",
"description": "a dead simple Chron cli tool for Node",
"bin": {
"sloth": "./index.js"
},
"main": "index.js",
"scripts": {
"immediately": "sloth .1 \"npm run say-hello\" true true",
"start": "sloth .1 \"npm run say-hello\"",
"say-hello": "node hello.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Vandivier/sloth.git"
},
"keywords": [
"chron"
],
"author": "John Vandivier",
"license": "MIT",
"bugs": {
"url": "https://github.com/Vandivier/sloth/issues"
},
"homepage": "https://github.com/Vandivier/sloth#readme",
"dependencies": {
"shelljs": "^0.8.1"
}
}