Node.js 作用域NPM包二进制文件未添加到路径

Node.js 作用域NPM包二进制文件未添加到路径,node.js,npm,Node.js,Npm,使用新的NPM私有包和范围包。但是,安装时,项目箱将不再添加到路径中 这在路径中可用的工具下起作用 { name: 'hello', bin: { 'hello':'hello.js' } } 一旦添加了范围,这就不起作用了 { name: '@private/hello', bin: { 'hello':'hello.js' } } 错误是: -bash: /usr/local/bin/hello: No such file or directory 箱子路径是否需要更改 更新:

使用新的NPM私有包和范围包。但是,安装时,项目箱将不再添加到路径中

这在路径中可用的工具下起作用

{
 name: 'hello',
 bin: { 'hello':'hello.js' }
}
一旦添加了范围,这就不起作用了

{
 name: '@private/hello',
 bin: { 'hello':'hello.js' }
}
错误是:

-bash: /usr/local/bin/hello: No such file or directory
箱子路径是否需要更改

更新:npm链接的作用是:

/usr/local/bin/hello -> /usr/local/lib/node_modules/@private/hello/hello.js
/usr/local/lib/node_modules/@private/hello -> /Path/To/HomeDirectory/SourceFolder.git
似乎对我有用

$ cat package.json
{"name":"@isaacs/foo","bin":{"foo":"foo.js"},"version":"1.2.3"}

$ npm link
/usr/local/bin/foo -> /usr/local/lib/node_modules/@isaacs/foo/foo.js
/usr/local/lib/node_modules/@isaacs/foo -> /Users/isaacs/dev/js/x/scopebin

$ foo
foo

$ cat $(which foo)
#!/usr/bin/env node
console.log("foo")

$ ls -laF $(which foo)
lrwxr-xr-x  1 isaacs  admin  38 Jun 22 15:55 /usr/local/bin/foo@ -> ../lib/node_modules/@isaacs/foo/foo.js

$ ls -laF /usr/local/lib/node_modules/@isaacs/foo
lrwxr-xr-x  1 isaacs  admin  31 Jun 22 15:55 /usr/local/lib/node_modules/@isaacs/foo@ -> /Users/isaacs/dev/js/x/scopebin
当然,如果在package.json中只使用
“bin”:“foo.js”
,那么将其转换为
“bin”:{:“foo.js”}
的默认机制将不起作用,因为
中有一个
//code>

$ npm link
/usr/local/bin/@isaacs/foo -> /usr/local/lib/node_modules/@isaacs/foo/foo.js
/usr/local/lib/node_modules/@isaacs/foo -> /Users/isaacs/dev/js/x/scopebin
由于
/usr/local/bin/@isaacs
不在我的
路径中,它将无法按预期工作

$ foo
bash: foo: command not found
这是使用最新和最伟大的npm。YMMV,如果您使用的是旧的

$ npm -v
2.12.0

在作用域包目录中执行时,您能否显示
npm-link
的输出?@eush77
npm-link
似乎解决了这个问题,并且可以找到并运行二进制文件(请参阅更新问题中的输出)。尽管它需要从源文件夹内部运行。除非用户手动查找文件夹,否则通过npm private安装也会出现同样的问题。在GitHub上作为npm bug归档?我认为这确实是一个npm bug。说全局安装的可执行文件应该转到
{prefix}/bin
,在这种情况下它们肯定不会。npm link
命令确实有效,但是,这是从npm private安装工具,所以
npm install foo-g
。此npm install命令似乎没有链接二进制文件。如果未限定“foo”的作用域,npm install命令将正常工作。