一、npm包全局安装:https://blog.csdn.net/wu_xianqiang/article/details/
需要注意的是,全局模式并不是将一个模块包安装为一个全局包的意思,它并不意味着可以从任何地方通过 来引用到它。
事实上,全局的包 在项目中根本 不能引入使用。
【假设:如果可以使用,在项目的package.json文件中根本没有这个包,代码提交后。换个环境下载下来后,全局包不存在就报错了】
1、全局模式这个称谓其实并不精确,存在诸多误导。实际上, 是将一个包安装为 全局可用的可执行命令。它根据包描述文件中的 字段配置,
将实际脚本链接【win系统的连接,应该是通过.cmd文件实现的】到与Node可执行文件相同的路径下【即.cmd文件放在node程序同一目录下】:
二、npm包 本地 安装:就是在项目下的 node_module 安装相应的包。项目中可以直接调用。具体的流程看下面的 介绍。
1、npm install 包名:下载指定的npm包。
a、从指定的源上下载这个 包,命令行上指定源,这种方式只是临时用 从 这个源上下载。https://www.cnblogs.com/ivan0626/p/6668336.html 如下:
2、npm install :下载package.json 中所有的包。
下面写下 关键 流程步骤,细节的先不管
1、首先检查 .npmrc 文件。(这个文件就是npm的配置文件)
优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件
说明:检测 .npmrc配置文件的目的是,应该是 确定从哪里去下载 相应的包。【个人分析的,没有查到文档有这个说明。】
2、检查项目中有无 lock 文件。
若无 lock 文件:从远程获取 包信息,构建依赖树。 看 文档 https://www.cnblogs.com/everlose/p/12505245.html
若有 lock 文件:和 package.json 不冲突,本身就是一个依赖树。可以跳过 构建依赖树的过程,到下一步。
3、检测缓存中是否有包:
a、缓存中有,直接把包解压 到 当前项目的node_modules目录。
b、无缓存:从 npm 远程 仓库下载安装 包
3、下载安装 包:https://blog.csdn.net/Alive_tree/article/details/
a、下载压缩包,放在~/.npm目录。【这里下载应该会根据】
b、将压缩包放到缓存中,并 解压压缩包到当前项目的node_modules目录。
注意,一个模块安装后,本地其实保存了两份,一份是~/.npm下的压缩包,另一份是node_modules目录下解压后的代码。在npm install运行的时候,只会检查node_modules中的模块,而不会检查/.npm.也就是说,如果在/.npm中有压缩包但是node_modules中没有模块,npm install会从远程仓库再下载一次压缩包。
四、.npmrc 配置文件:
1、.npmrc 文件的作用:https://www.jianshu.com/p/5a1bc7123f31
2、npm安装私有仓库npm包:https://blog.csdn.net/huzhenv5/article/details/(两种方案) 或 https://segmentfault.com/q/49247
说明:实现的功能是 npm install 时,大部分包都是从外网下载,公司内部 的包从内网下载。
3、如果某个包 安装,只是临时的配置。可以直接在npm 命令上,通过参数设置,而不需要设置 .npmrc文件。如,源的设置、信息显示的等级。
五、包的组织【包的scope】:https://www.nps.ink/443589.html(为指定组织下的包 配置数据源 .npmrc配置) 或 https://blog.csdn.net/u013727805/article/details/80849329
六、package.json 自定义 包的 下载地址:https://www.cnblogs.com/tzyy/p/5193811.html(package.json属性详解)
1、package.json 中 包 支持自定义 的下载路径有很多。如:urls、git urls【ssh 或 http】、github、Local Paths【本地路径也是可以的】。
- urls:在版本范围的地方可以写一个url指向一个压缩包。注意是压缩包,而不是远程npm源的包信息。包信息里面有 对应的 压缩包地址【一般都是tar包】。
- git urls:也可以指明 对应的 分支。
- 其他的看文档。
注意:npm仓库源上,每个包都有对应的包信息 文件(也是是一个json文件)。通过 npm info 也可以看到 包的信息,如:npm info axios。
在没有 package-lock.json 时,npm install 时,构建模块依赖树。就要通过包信息来实现。
七、npm install 安装包的几种方式:【npm install安装的方式和package.json中信息是一致的】https://juejin.cn/post/#heading-2
- 包名安装:
- 包名加版本:
- 包名加
- tarball url:
- tarball file:
直接 install 包 也可以的(推荐下面这种)。 http://cuketest.com/zh-cn/shared/npm_offline
- git url:
- username/project:
九、 npm命令 调整日志等级:https://www.cnblogs.com/k4nz/p/14238164.html 或 https://blog.csdn.net/john987321456/article/details/112183317 或
https://blog.csdn.net/weixin_/article/details/(里面有说明等级参数的 几个 快捷方式,如 --verbose)
如:npm install 安装时,显示更多的信息:https://segmentfault.com/q/26783
上面两个都是在当前命令上设置 这个日志 等级【日志,一般都是
当前命令 看下 日志,不会全局去设置】,也可以在全局上设置 日志等级。
十、npm 缓存:https://blog.csdn.net/liuyan/article/details/(看缓存那一块)
1、清除缓存 好像 不让用,试过几次都不成功。但是可以通过 设置
优先使用网络数据。
2、
使用网络数据:添加参数 --prefer-online
hr>
一、node-sass 下载安装 失败:node-sass 国内下载报错的 概率是相当高。基本新环境的电脑,国内100%会出现这个问题。
参考:https://www.cnblogs.com/Qooo/p/14021354.html(有说明原因)或 https://blog.csdn.net/weixin_44653329/article/details/103827492 或 https://www.w3cschool.cn/article/29315017.html
1、node-sass 安装步骤 分析:
- 校验本地node_modules中是否已安装node-sass,版本是否一致;
- 如未安装或版本不符,从npm源安装node-sass本体;
- 检测全局缓存和本地中是否有binding.node,如有即跳过安装;
- 没有binding.node则从github下载该二进制文件并将其缓存到全局;
- 假如binding.node下载失败,则尝试本地编译出该文件;
- 将版本信息写到package-lock.json;
由此看到,实际上node-sass依赖了一个二进制文件binding.node,从npm源安装完本体后还会从github下载binding.node。
2、因此 安装 失败原因有以下几种:
原因一
:npm源速度慢:国外npm源速度慢,可以使用 淘宝镜像源。改变了npm源,node-sass 包的 下载 快了。但是
binding.node包
默认是从github下载的,不是
从npm源上下载的。所以 只是 改变 npm 的源,node-sass包 还是会 出现 安装失败的可能,还需要改变 node-sass包的下载路径。
原因二
:binding.node源无法访问或速度慢:node-sass除了npm部分的代码,还会下载二进制文件binding.node,默认源是github,
国内访问较慢,特殊时期甚至无法访问。我们也可以将其改成国内源。
解决办法:
把 binding.node 源也
设置 成国内的
淘宝镜像的源。 https://blog.csdn.net/_/article/details/
或【
推荐这种方式设置】
或 【
不推荐这种,电脑重启后,设置的环境变量没有了。不知道是不是告诉电脑没有管理员权限的问题导致的】
注意:
国内 基本都是这个原因 导致的 安装 失败。 当然 直接把 文件下载下来,把 sass_binary_site 指向本地路径也是可以的。
3、类似问题的npm包 还有:chromedriver,phantomjs,electron等。 https://blog.csdn.net/weixin_/article/details/
原因三:由于nodejs版本高导致node-sass安装不了:解决办法参考文档
原因四
:缓存中binding.node版本不一致: 参考文档
原因五:安装失败后重新安装:安装失败后重新安装,有可能无权限删除已安装内容,此时npm uninstall node-sass或手动删掉原目录后再安装即可。
原因六
:提示没有安装python、build失败:假如拉取binding.node失败,node-sass会尝试在本地编译binding.node,过程就需要python。
1、node-sass 拉取 binding.node 失败。就会 尝试在本地编译 binding.node。
本地编译 binding.node 就需要 python 环境。
- 下载压缩包,放在~/.npm目录
- 解压压缩包到当前项目的node_modules目录
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-nodejs/31875.html