node.js - 范围内的 NPM 软件包二进制文件未添加到 PATH

标签 node.js npm

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

使用 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 链接 的作用:

/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

当然,如果你只使用 "bin":"foo.js"在你的 package.json 中,然后将其转换为 "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/

相关文章:

vue.js - 在 nativescript-vue 应用程序中哪里安装 axios?

node.js - AWS Lambda 从 S3 解压到 S3

node.js - 如何将 sqlite3 模块与 Electron 一起使用?

node.js - 在什么条件下 req.connection.remoteAddress 可以为空(ExpressJS)

node.js - Fluxible 中的“脱水”和“再水合”代表什么?

npm - mocha 无法编译 ES6,即使有正确的选项

node.js - 如何在node.js中使用 'limiter'

javascript - 如何以水平方式显示最小值和最大值?

javascript - 一键执行多个js文件

node.js - express.js 中 Ajax 请求的错误处理