fish shell 和全局 npm 模块
fish shell and global npm modules
我的本地环境遇到了一些问题。
我正在使用:
- 自制软件 (1.1.4)
- 鱼 shell (2.4)
- n 版本管理器 (2.1.0)
- 节点
- npm
以上所有内容最初都是通过自制软件安装的。
问题:
- 任何全局安装的模块都不能 运行。
- 我无法更新 npm 版本。
我经常使用的节点版本是 0.10.48 和 6.9.2 - 但主要是 4.6.2。
我在 fish 中创建了一些别名,以便能够将全局模块获取到 运行。不过,我更愿意解决根本原因,而不是继续应用更多创可贴。
额外信息:
~> npm config get prefix
/Users/me/.npm-packages
~> npm bin
/Users/me/node_modules/.bin
当我尝试更新 npm 时会发生什么:
~> npm install -g npm@3
/Users/me/.npm-packages/bin/npm -> /Users/me/.npm-packages/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.10 /Users/me/.npm-packages/lib/node_modules/npm
~> npm -v
2.15.9
当我尝试调用全局模块时:
~> gulp
fish: Unknown command 'gulp'
我为修复全局模块所做的尝试:
~> cat ~/.config/fish/config.fish
set fish_user_paths /Users/me/.npm-packages
ls ~/.config/fish/functions
bower.fish ember.fish pm2.fish
~> cat ~/.config/fish/functions/bower.fish
function bower
/Users/me/.npm-packages/bin/bower $argv;
end
如果您能提供任何帮助,我们将不胜感激!我已经尝试解决这个问题一段时间了,但没有任何运气!
我通过完全卸载(并删除任何痕迹)node
、npm
和 n
、卸载 fish
shell 并更改为zsh
相反。
之后,我安装了 nvm
并用它在我的机器上恢复 node
。
全局 npm 模块现在可用。
全局安装节点应用程序时会发生什么https://docs.npmjs.com/getting-started/fixing-npm-permissions
在 OSX 10.12.5 中配置
鱼 v2.6.0
节点 v8.1.0
终端中的示例命令 returns both
term~> npm install jshint -g
/Users/username/npm-global/lib/node_modules/bin/jshint ->
/Users/username/npm-global/lib/node_modules/jshint/bin/jshint
你应该在 shell 中的 PATH 使你能够执行 jshint (installed package) -> 指向实际安装位置
在文件 ~/.profile 中包含用于配置 PATH 的行
export PATH="$HOME/npm-global/lib/node-modules/:$PATH"
您可以使用已安装的 npm 模块。您只需要将 npm 全局路径添加到 shell。为此,我 运行:
$ npm config get prefix
// Output: /usr/local/Cellar/node/9.2.1
然后,添加到我的 fish/config.fish
:
set PATH /usr/local/Cellar/node/9.2.1/bin $PATH
这就是帮我解决问题的Github related link
我的永久解决方案(使用 macOS Mojave 和 fish 2.7.1):
set -U fish_user_paths /Users/{USERNAME}/.npm-packages/bin $fish_user_paths
顺便说一句,下面的一个有效但只在终端会话中:
set PATH $PATH /Users/{USERNAME}/.npm-packages/bin
注意:您可以通过以下方式找到 npm-packages 路径:
printf "%s\n" $PATH
对我来说这些都没用,所以我安装了 oh my fish nvm plugin
omf install nvm
我的本地环境遇到了一些问题。
我正在使用:
- 自制软件 (1.1.4)
- 鱼 shell (2.4)
- n 版本管理器 (2.1.0)
- 节点
- npm
以上所有内容最初都是通过自制软件安装的。
问题:
- 任何全局安装的模块都不能 运行。
- 我无法更新 npm 版本。
我经常使用的节点版本是 0.10.48 和 6.9.2 - 但主要是 4.6.2。
我在 fish 中创建了一些别名,以便能够将全局模块获取到 运行。不过,我更愿意解决根本原因,而不是继续应用更多创可贴。
额外信息:
~> npm config get prefix
/Users/me/.npm-packages
~> npm bin
/Users/me/node_modules/.bin
当我尝试更新 npm 时会发生什么:
~> npm install -g npm@3
/Users/me/.npm-packages/bin/npm -> /Users/me/.npm-packages/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.10 /Users/me/.npm-packages/lib/node_modules/npm
~> npm -v
2.15.9
当我尝试调用全局模块时:
~> gulp
fish: Unknown command 'gulp'
我为修复全局模块所做的尝试:
~> cat ~/.config/fish/config.fish
set fish_user_paths /Users/me/.npm-packages
ls ~/.config/fish/functions
bower.fish ember.fish pm2.fish
~> cat ~/.config/fish/functions/bower.fish
function bower
/Users/me/.npm-packages/bin/bower $argv;
end
如果您能提供任何帮助,我们将不胜感激!我已经尝试解决这个问题一段时间了,但没有任何运气!
我通过完全卸载(并删除任何痕迹)node
、npm
和 n
、卸载 fish
shell 并更改为zsh
相反。
之后,我安装了 nvm
并用它在我的机器上恢复 node
。
全局 npm 模块现在可用。
全局安装节点应用程序时会发生什么https://docs.npmjs.com/getting-started/fixing-npm-permissions
在 OSX 10.12.5 中配置 鱼 v2.6.0 节点 v8.1.0 终端中的示例命令 returns both
term~> npm install jshint -g
/Users/username/npm-global/lib/node_modules/bin/jshint ->
/Users/username/npm-global/lib/node_modules/jshint/bin/jshint
你应该在 shell 中的 PATH 使你能够执行 jshint (installed package) -> 指向实际安装位置
在文件 ~/.profile 中包含用于配置 PATH 的行
export PATH="$HOME/npm-global/lib/node-modules/:$PATH"
您可以使用已安装的 npm 模块。您只需要将 npm 全局路径添加到 shell。为此,我 运行:
$ npm config get prefix
// Output: /usr/local/Cellar/node/9.2.1
然后,添加到我的 fish/config.fish
:
set PATH /usr/local/Cellar/node/9.2.1/bin $PATH
这就是帮我解决问题的Github related link
我的永久解决方案(使用 macOS Mojave 和 fish 2.7.1):
set -U fish_user_paths /Users/{USERNAME}/.npm-packages/bin $fish_user_paths
顺便说一句,下面的一个有效但只在终端会话中:
set PATH $PATH /Users/{USERNAME}/.npm-packages/bin
注意:您可以通过以下方式找到 npm-packages 路径:
printf "%s\n" $PATH
对我来说这些都没用,所以我安装了 oh my fish nvm plugin
omf install nvm