2018.8.9
基础
1 | ## 配置信息 |
node多版本控制
mac/lunix: nvm
windows: nvm-
n
改变全局模块/缓存路劲
# 安装npm cnpm踩坑记录
## 3. 改变原有的环境变量(配置npm的全局模块的存放路径以及cache的路径)
(1)先在C:\Program Files\nodejs目录下新建”global”和”cache”两个文件夹
(2)输入以下命令改变npm配置
npm config set prefix “C:\Program Files\nodejs\global”
npm config set cache “C:\Program Files\nodejs\cache”
## 4.配置环境变量
(1)我的电脑右键点击属性进入该页面—点击高级系统设置—点击环境变量进入该页面
(2)修改用户变量PATH:把”C:\Program Files\nodejs\global”加到后面,用分号隔开。
(3)新增系统变量NODE_PATH:设置成“C:\Program Files\nodejs\node_global\node_modules”。
tip:由于前面已经更改了原有的环境变量,所以安装cnmp时会自己安装到C:\Program Files\nodejs\global\node_modules目录下面,所以cnpm的环境变量也许要更改(如下步骤很重要)
(4)修改系统变量path:把“C:\Program Files\nodejs\global\node_modules\cnpm“加到后面
## 5.安装cnmp
安装命令:npm install -g cnpm –registry=https://registry.npm.taobao.org
## 6.cmd检测是否安装成功(cnpm -v),如下就算成功
设置cnpm
$_PS: 装axios的时候镜像也没有用,用yarn就ojbk了
# npm的设置cnpm
淘宝 npm 地址: http://npm.taobao.org/
如何使用
有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法。以淘宝npm镜像安装express举例:
## 1.临时使用
npm –registry https://registry.npm.taobao.org install express
## 2.持久使用
npm config set registry https://registry.npm.taobao.org
// 配置后可通过下面方式来验证是否成功
npm config get registry
// 或
npm info express
## 3.通过cnpm使用
npm install -g cnpm –registry=https://registry.npm.taobao.org
// 使用
cnpm install express
## 4.关闭npm的https
npm config set strict-ssl false
设置镜像
这个也是网上搜的,亲自试过,非常好用!
镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):
## 1.通过config命令
npm config set registry https://registry.npm.taobao.org
npm info underscore (如果上面配置正确这个命令会有字符串response)
## 2.命令行指定
npm –registry https://registry.npm.taobao.org info underscore
## 3.编辑 ~/.npmrc 加入下面内容
registry = https://registry.npm.taobao.org
搜索镜像: https://npm.taobao.org
建立或使用镜像,参考: https://github.com/cnpm/cnpmjs.org
# npm 安装 electron 超时
在用户目录的 .npmrc 文件里添加一行
electron_mirror=https://npm.taobao.org/mirrors/electron/
指定 Electron 二进制文件的国内镜像(上面路径里最后一个正斜杠 “/“ 别丢了)。
为Npm设代理
为npm更换镜像后,我在公司安装npm包还是链接超时。后来在同事的提醒下,知道公司所有的网络链接都要通过公司代理服务器的。所以尝试着为npm设置了下proxy,设置方法如下:
第一个是http,第二个是https
npm config set proxy http://proxy.company.com
npm config set https-proxy http://proxy.company.com
上面proxy代理地址可根据你公司电脑ie里默认设置的代理服务器来填写。如ie里没有设置代理服务器,那么就需要知道公司的代理服务器地址。
通过为npm设置公司代理服务器的方式,npm终于能顺利连接了。
NPM查看包的版本信息
查看npmjs服务器上的包的版本信息
npm view pkg version
查看服务器上包pkg的最新的版本信息
npm view gulp version # 4.0.0
npm view pgk versions
查看npmjs服务器上包pkg的所有的版本信息
npm view gulp versions
npm info pkg
查看npmjs服务器上包pkg的最新的版本信息,和npm view pkg version的功能类似,但比npm view pkg version提供的信息更丰富
npm info gulp
查看本地安装包的版本信息
npm ls pkg
查看某个项目下包pkg的版本信息,注意该命令需要在某个项目下执行
npm ls webpack
webapp_backend@1.0.0 /本地的项目路径
└── webpack@3.12.0
npm ls pkg -g
查看本地全局安装的pkg版本
npm ls webpack -g
/Users/mac/.nvm/versions/node/v8.8.0/lib
└── webpack@4.29.6
tag
一般不要通过npm unpublsh -f
删除发布的包
可以通过设置tag的方式去及时更新
npm tag
发布测试包,不希望检测更新,或避免用户安装测试包。
不小心把测试版发布成了正式版,我该怎么办?只能跑路了吗?
version:
发布到npm后,每一个版本号都对应了其资源文件,而且是不可修改的。npm中的版本号类似于git中的tag。
tag:
一般情况下,我们可以不指定tag,这时默认就会用latest这个tag,所有发布或者安装都是最新的正式版。
而指定tag之后,我们可以在这个tag上发布一个更新的版本,用户安装的时候如果也指定这个tag,则会安装这个tag下的最新版。
1 | # 查看当前的tag和对应的version。 |
npm发包
执行脚本
可以通过设置prepublish在发布前执行脚本
对于以下脚本,npm 支持 package.json 文件的“scripts”属性:
prepublish:在包打包和发布之前运行,以及在npm install没有任何参数的本地运行。(见下文)
prepare:在打包和发布包之前运行,在npm install没有任何参数的本地运行(见下文)。这是在之后运行prepublish,但是之前prepublishOnly。
prepublishOnly:在准备和包装之前运行,仅打开npm publish。(见下文。)
prepack:前运行压缩包包装(上npm pack,npm publish并安装git的依赖时)
postpack:在生成tarball之后运行并移动到其最终目标。
publish,postpublish:发布包后运行。
preinstall:在安装软件包之前运行
install,postinstall:安装软件包后运行。
preuninstall,uninstall:在卸载软件包之前运行。
postuninstall:在卸载软件包后运行。
preversion:在碰撞包版本之前运行。
version:运行AFTER碰撞包版本,但提交之前。
postversion:运行AFTER碰撞包版本,然后提交。
pretest,test,posttest:由npm test命令运行。
prestop,stop,poststop:由npm stop命令运行。
prestart,start,poststart:由npm start命令运行。
prerestart,restart,postrestart:按npm restart命令运行。注意:npm restart如果没有restart提供脚本,将运行停止和启动脚本。
preshrinkwrap,shrinkwrap,postshrinkwrap:由npm shrinkwrap命令运行。
此外,可以通过运行执行任意脚本npm run-script <stage>
。前置和后名称匹配的命令将这些运行以及(例如premyscript,myscript, postmyscript)。可以运行依赖项的脚本npm explore <pkg> -- npm run <stage>
。
忽略文件
方法一:使用 .gitignore 设置忽略哪些文件
方法二:使用 .npmignore设置忽略哪些文件
.npmignore的写法跟.gitignore 的规则完全一样。
若同时使用了.npmignore和.gitignore,只有.npmignore会生效,优先级比较高。
方法三:使用package.json的files字段选择发布哪些文件
直接在package.json中files字段设置发布哪些文件或目录。
这个优先级高于.npmignore和.gitignore。
1 | # 默认被忽略: |
发包异常
Error: 402 Payment Required
换了个名字,想起了自己见过的库,就模仿加了个 @ 前缀的包,再次发布的时候,报了下面的错误:
Error: 402 Payment Required - PUT https://registry.npmjs.org/@xx/xx - You must sign up for private packages
查看文档,发现 @npm/package-name 这种形式的包名,是有作用域的包名形式,执行 npm publish 的时候默认是发布私有的包。因此,第一种方式是花钱买私有包的服务,另外一种方式就是指定参数,表示公开:
npm publish –access public
需要注意的是这种形式的包名跟 npm 账户有对应关系,不能随便填写。
npm init --scope=@my-org
这种形式表示是一个组织,my-org 对应是 npm 中的组织名。
npm init --scope=@my-username
安装npm包
windows 安装node-sass
使用node-sass模块,npm install安装一直失败,尝试了很多方法,最终找到了这个方法,简直棒极了!
两种方法:
第一种:
1.先检查项目的node_modules文件夹是否存在node-sass文件夹,存在,删掉,不存在,执行第二步;
2.打开cmd,在项目根目录下输入以下代码npm install node-sass --sass-binary-site=http://npm.taobao.org/mirrors/node-sass
或SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/
或者
在你的project下创建一个 .npmrc 文件
在文件中添加 sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
第二种:
进入项目的node_modules目录下;
2.使用git克隆node-sass源码:Git路径为:git clone https://github.com/sass/node-sass.git
3.使用编辑器,进入node_modules/node-sass/package.json文件中;
4.使用编辑器,将package.json文件中nodeSassConfig>binarySite的值修改为淘宝镜像地址;
5.在cmd进入node-sass文件夹中,执行以下命令:npm install
即可等待node-sass安装成功
node-sass -v
electron安装
在你的npmrc文件里添加淘宝npm源,Windows用户可以参考下面的路径:1
2registry=https://registry.npm.taobao.org/
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/
也可以使用下面命令:ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ npm install --save-dev electron
npm安装出错
SSL Error: CERT_UNTRUSTED while using npm command
# 实际
通过安装n包,更新node成功了。之后出现问题是退出当前工作目录,重新进入就好了。(服务端同学,把工作目录全量更新了,然后npm命令就不可以执行了,不知道他全量更新做了什么)
# node npm install Error: CERT_UNTRUSTED
ssl验证问题,使用下面的命令取消ssl验证即可解决
npm config set strict-ssl false
错误error-code-ELIFECYCLE,执行如下命令
npm cache clear –force
npm install -g npm
# SSL Error: CERT_UNTRUSTED while using npm command
### 1
You can bypass https using below commands:npm config set strict-ssl false
or set the registry URL from https or http like below:npm config set registry="http://registry.npmjs.org/"
### 2
Update your node.js installation.The following commands should do it (from here):
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
-RPC failed,curl 18 transfer closed with outstanding read data remaining
项目太久,资源文件太大. $_PS: 最后也没有下载下来,换了一个仓库。
原因1:缓存区溢出。网上大部分解决措施:
git config –glob al http.postBuffer 524288000
可能原因2:网络下载速度缓慢
git config –global http.lowSpeedLimit 0
git config –global http.lowSpeedTime 999999
第三:如果依旧clone失败,则首先浅层clone,然后更新远程库到本地
git clone –depth=1 http://gitlab.xxx.cn/yyy/zzz.git
$ cd large-repository
git fetch –unshallow
其他方式,一般clone http方式的容易产生此问题,改成SSH的方式也有效,即https://改为git://
command not found
bash: vue: command not found
npm 全局路径不对或 node_modules 的路径未设置
三、查看npm全局路径:npm root -g
得出/usr/local/node/lib/node_modules,检查是否正确的路径。
若存在问题可重新指定:
npm config set prefix /usr/local
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”
错误原因:缺少windows构建插件;
全局安装windows构建工具,执行如下命令即可!npm install --global --production windows-build-tools
ERROR in Module build failed (from ./node_modules/sass-loader/lib/loader.js):
sass-loader 降低版本号