npm的包装器,它将节点模块存储在项目外部,并提供对它们的简单访问。
npmenv的Python项目详细描述
npmenv
npm的包装器,它将节点模块存储在项目外部,并提供对它们的简单访问。
npmenv
是一个受pipenv
启发的python模块,它将包存储在项目之外(在特定于os的目录中),以避免项目混乱。它还有一个run
命令,在运行给定命令之前将node_modules/.bin
放入PATH
。如果您在项目中install node
,那么它将具有使用该节点版本运行代码和第三方脚本的额外好处。然后,您可以锁定每个项目的节点版本,并在需要时单独升级它们。
安装:pip install npmenv
支持:所有平台(Linux、MacOS、Windows)
需要:python 3.6+
工作原理
除了env-...
命令之外,npmenv还将移交给npm
。但在移交之前,它会将您的package.json
和/或package-lock.json
符号链接到虚拟环境中,并在该环境中运行npm。您可以通过npmenv env-location
返回的路径访问任何node_modules
文件,即使删除并重新创建了环境,路径也将保持不变(但如果项目路径更改,则不会)。
注意:npmenv不处理npm生成的任何其他文件(例如包覆面提取),不过将来可能会添加更多功能。
cli用法
npmenv 0.2.0
env-list List all currently existing environments
env-location Output path to env for current dir (may not exist yet)
env-modules [name] List items in node_modules (recursive if package name given)
env-run cmd [args] Run command with env's bin dir in start of PATH
env-rm [env_id] Remove the env for current dir (or env with given id)
env-cleanup Remove envs for projects that no longer exist
*any npm command*
模块API
class NpmenvException(builtins.Exception)
Exception for npmenv-related issues
env_cleanup() -> List[Tuple[str, pathlib.Path, str]]
Remove envs for projects that no longer exist (no package or lock file)
env_list() -> List[Tuple[str, pathlib.Path, Union[str, NoneType]]]
Return list of tuples (env id, project dir, issue with project existance)
env_location(proj_dir:Union[pathlib.Path, str]=None) -> pathlib.Path
Return env dir path for given project dir (may/may not exist yet)
env_npm(args:str='', proj_dir:Union[pathlib.Path, str]=None) -> subprocess.CompletedProcess
Execute npm with given args in env dir of given project dir
env_rm(identifier:Union[pathlib.Path, str]=None) -> pathlib.Path
Remove the env for given project dir or env id (defaults to CWD)
env_run(args:str, proj_dir:Union[pathlib.Path, str]=None, run_kwargs:Any={}) -> subprocess.CompletedProcess
Run a command with node_modules/.bin at start of PATH environment variable
版本历史记录
0.2.0 Added run_kwargs arg to env_run
0.1.2 Added env-modules command
0.0.2 Improved typing support (no functional changes)
0.0.1 Improved documentation (no functional changes)
0.0.0 Version 0.0.0