使用新的NPM专用程序包和作用域程序包。但是,在安装时,项目容器将不再添加到路径中。

可以使用PATH中可用的工具来工作。

{
 name: 'hello',
 bin: { 'hello':'hello.js' }
}


一旦添加了作用域,这将不起作用。

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


错误是:

-bash: /usr/local/bin/hello: No such file or directory


bin路径是否需要更改?

更新:npm link的作用:

/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":{<package name>:"foo.js"}的默认机制将不起作用,因为<package name>中包含/

$ 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不在我的PATH中,因此无法正常工作。

$ foo
bash: foo: command not found


这使用的是最新的最大npm。 YMMV,如果您使用的是旧版本。

$ npm -v
2.12.0

关于node.js - 作用域NPM软件包二进制文件未添加到PATH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30976990/

10-16 07:16