使用带有范围包的新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
答案 0 :(得分:0)
似乎适合我。
$ 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>
有一个{{ 1}}在其中。
/
由于$ 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
这是使用最新最好的npm。 YMMV,如果你使用旧的东西。
$ foo
bash: foo: command not found