Npm使用

2018.8.9

基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
## 配置信息
### 获取
npm config list
npm config ls -l # 全部信息
npm config get registry # 特定/指定设置
### 设置
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm config set http-proxy http://proxy.company.com:8080
npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist
### 删除
npm config delete proxy
npm config delete http-proxy
npm config delete https-proxy

## npm 安装/管理/升级包
npm -g install npm@4.0.2
npm install npm@latest -g # latest
npm i element-ui -S # 简写
### 更新
# npm update [-g] [<pkg>...] # 更新
npm install npm@latest -g # npm 更新
npm update @xes/x-cli -g --registry=https://npm.xesv5.com

### 包信息
# npm view <packageName> versions --json
npm view @xes/x-cli version
npm info express

## 发包
npm login
npm adduser

## others
### 缓存
npm cache clear --force
npm get cache # 获取缓存目录

###
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set unsafe-perm true

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设代理

# Node.js安装npm包出现网络错误的2种解决方案

为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
2
3
4
5
6
7
8
# 查看当前的tag和对应的version。
npm dist-tag ls

# 查看my-package发布过的所有版本号。
npm view my-package versions

# 给my-package设置tag,对应到版本version。
npm dist-tag add my-package@version tag

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 默认被忽略:
.*.swp
._*
.DS_Store
.git
.hg
.npmrc
.lock-wscript
.svn
.wafpickle-*
config.gypi
CVS
npm-debug.log
node_modules/

# 默认被包含,即便设置忽略也无效
package.json
README (and its variants)
CHANGELOG (and its variants)

发包异常

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
2
registry=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 降低版本号

knowledge is no pay,reward is kindness
0%