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-sassset 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 降低版本号