我有package.json
这样:
{
"name": "some-module",
"version": "1.0.0",
"bin": "./bin/some-module.js",
"main": "./bin/some-module.js",
"description": "Some module description",
"homepage": "http://my.home.page.com",
"author": {
"name": "Matias Fidemraizer",
"email": "no-email@no-email.com",
"url": "http://some.url.com"
},
"engines": {
"node": ">=0.4.0"
},
"keywords": [
"somekeyword"
],
"license": {
"type": "Apache v2",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"preferGlobal": true,
"repository": {
"type": "git",
"url": "git://github.com/some/repo"
},
"dependencies": {
"somedependency": "*"
}
}
当我尝试安装整个模块键入npm -g install /path/to/module/folder
时, npm 会在默认{{1}的 AppData 文件夹中创建一个.cmd
文件按预期方式进行全局安装的位置。
但生成的代码不包含node_modules
或node.exe
:
node
...所以当我尝试在CMD,PowerShell等中执行我的"%~dp0\node_modules\some-module\bin\some-module.js" %*
模块时,它是使用Windows脚本宿主(WSH)执行的。
出于这个原因,我认为比较一些像YUIDocJS这样的现有模块的some-module
就足以找出造成这个问题的原因但是我无法弄清楚我自己的package.json
有什么问题所以它没有不要创建预期的全局安装。
提前感谢您的努力。
答案 0 :(得分:2)
您#!/usr/bin/env node
的{{1}}媒体资源中引用的文件顶部是否有bin
?即使shebang是* nix特定指令,package.json
depends on its presence to create the shim for the .cmd