如何为npm软件包的本地安装设置自定义位置?
如何设置npm包的本地安装的自定义位置?
问题的原因:用户想要将npm包的本地安装位置设置为自定义位置。
解决方法:
1. 使用--prefix
标志和--global
标志进行安装:
pje:~/foo $ npm install bower -g --prefix ./vendor/node_modules
2. 在PATH
中添加~/foo/vendor/node_modules
路径,以便能够通过命令行访问已安装的二进制文件。
3. 可以在六个不同的位置设置npm的可配置属性,按优先级排序:
- 命令行标志: --prefix ./vendor/node_modules
- 环境变量: NPM_CONFIG_PREFIX=./vendor/node_modules
- 用户配置文件: $HOME/.npmrc
或userconfig
参数
- 全局配置文件: $PREFIX/etc/npmrc
或userconfig
参数
- 内置配置文件: path/to/npm/itself/npmrc
- 默认配置: node_modules/npmconf/config-defs.js
4. 默认情况下,本地安装的包放在./node_modules
中,全局安装的包放在prefix
配置变量中(默认为/usr/local
)。
5. 可以运行npm config list
查看当前配置,运行npm config edit
进行更改。
相关问题:
- 通过npm install eslint.4.0 -g --prefix c:\my_npm
命令安装的包会被放置在c:\my_npm\eslint
路径下。
- 是否可以通过package.json文件实现类似的功能?即在目录A中运行npm install
时,包将被安装在目录B中。这种解决方案似乎适用于单个包的安装。
- 是否有办法使用这种方法安装所有的依赖项?npm install
会将依赖项安装在本地,npm install X -g --prefix "..."
会将模块X安装到指定的前缀位置,npm install -g --prefix "..."
会将当前包安装到指定的前缀位置。
- 如何告诉npm不要将其文件放置在用户的各个目录中,而只允许在特定位置(例如D:\Projects)保存文件?
通过使用--prefix
标志和--global
标志,可以将npm包的本地安装位置设置为自定义位置。可以通过命令行标志、环境变量、用户配置文件、全局配置文件、内置配置文件和默认配置来设置npm的可配置属性。默认情况下,本地安装的包放在./node_modules
中,全局安装的包放在prefix
配置变量中。可以使用npm config list
命令查看当前配置,使用npm config edit
命令进行更改。
问题原因:用户想要在本地安装npm包时设置自定义位置。
解决方法:可以通过以下两种方式设置npm配置:
1. 使用npm config set prefix "$(pwd)/vendor/node_modules"
命令将npm配置设置为当前目录下的vendor/node_modules
路径。
2. 使用npm config set prefix "$HOME/vendor/node_modules"
命令将npm配置设置为HOME/vendor/node_modules
路径。
可以使用npm config ls -l
命令检查配置。
此外,还可以采用--prefix
标志的方法。这种方法将设置全局前缀,因此使用npm install
仍然会将包安装在./node_modules
目录下,而使用npm install -g
则会将包安装在"$(pwd)/vendor/node_modules"
目录下。需要注意的是,可能会因为设置了这个配置然后忘记它,导致后来发现全局包的行为出现异常。