Npm&n&nvm
这货, 本来我就当做一个工具再用, 但是, 当我学习使用electron的时候出事了, 被这货卡住了.
install会不成功
参考: https://github.com/electron/electron-quick-start/issues/127
我们从头捋一下:
本来 : npm
npm install xxxx
npm install --verbose #to see the download progress
npm update xxx
npm install moduleName ,则是将模块下载到当前命令行所在目录。
npm install moduleName -g ,模块将被下载安装到全局目录中,即Node的安装目录下的node_modules下, 但是这么这么装, 导致项目没法用. 所以, 别这么装.
todo npm 安装的时候回报大量的警告, 咋办?
缓存目录: ~/.npm
npm install --cache-min 999 <package-name> #999分钟新鲜度以内的模块, 从缓存安装.
版本管理工具: 目前主流的node版本管理工具有两种,nvm和n http://www.imooc.com/article/14617
高能之前
在进行下面的高能操作之前, 需要搞清楚npm的基础操作
npm -l #列出所有命令参数
npm -v #看版本号
npm search xxx #查找xxx模块
npm view xxx #查看xxx模块的细节
npm publish #发布自己的模块
npm help json #查看package.json的所有可以用的属性, package.json的帮助文档
npm config list #这个可以看到目前的设置, 可以看到 registry 基本都指定的npmjs
项目根目录下面建议定义一个package.json, 这里面规定了项目的依赖包, electron-quick-start/package.json:
{
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js", 注释:这里指定是载入入口
"scripts": {
"start": "electron ."
},
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"devDependencies": {
"electron": "~1.7.8"
}
"private": "true" 注释:这里指定不发布
}
registry相关
npm config list #可以看到 registry 地址
npm profile get #查看属性值, 需要你有registry用户才行.
npm view #查看registry信息, 能看到之前install失败的各种信息.
npm view npm repository.url #能看到registry的url
参考:
- https://docs.npmjs.com/misc/registry
- https://docs.npmjs.com 所有信息都可以在这个索引页搜索到
- https://docs.npmjs.com/cli/view
图样图森破
那么, 目前很清晰了, 我们要做两件事:
- 缩减每次安装的尺寸, 包太大总是会失败的. so我们应该研究下-g选项.
- 使用淘宝的源, 其实我npm里面本来就有淘宝的源, 但是, 估计是electron特别傻.
npm install electron -g --verbose
npm install electron
npm install --verbose #to see the download progress
使用淘宝cnpm
#安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#或者alias
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
### 注意, cnpm的search不灵, search还是用npm吧, cnpm主要是安装, 他用的是国内的淘宝镜像.
上面的做了之后, 我们发现然并卵, 依旧死在: node install.js
# 然后我们发现了 ~/.npmrc 写了下面5句话.
registry = https://registry.npm.taobao.org
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
NVM_IOJS_ORG_MIRROR=https://npm.taobao.org/mirrors/iojs
ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"
SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"
依旧无法解决, 继续踩各种坑, 附录有.npmrc更详细的内容.
参考:
- https://docs.npmjs.com/files/npmrc
- https://docs.npmjs.com/misc/config
-g选项
npm install -g express #这样就是-g安装, 安装之后模块可以命令行直接使用.
express #直接运行模块命令
######### 如果你的package.json里面有下面一行, 那么你的包也能被别人-g安装.
"bin":"./path/to/script"
###########################
npm install -g --verbose electron #可以看看安装过程.
.npmrc
// 位置: ~/.npmrc
registry=https://registry.npm.taobao.org/
disturl=https://npm.taobao.org/dist
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
NVM_IOJS_ORG_MIRROR=https://npm.taobao.org/mirrors/iojs
ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass
phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
SELENIUM_CDNURL=http://npm.taobao.org/mirrorss/selenium
参考:
- https://npm.taobao.org/mirrors
所以, 是时候试试其他包管理器了.
安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm 比npm要友好的多. 至少有各种进度啥的.
赞美万能的淘宝, 淘宝搞定了.
是时候展示真正的技术: cnpm
搞定一切, 赞美伟大的淘宝, 万能的淘宝, 行走于凡间的神灵, 尘世间的伟大的拯救者: 淘宝
版本管理工具
- nvm
- n
- nave
- ndenv
- nenv
nvm use 4 #用node4
nave use 6 #用node6
nvm install v0.10.24 #Install a specific version number
nvm use 0.10 #Use the latest available 0.10.x release
nvm run 0.10.24 myApp.js #Run myApp.js using node v0.10.24
nvm alias default 0.10.24#Set default node version on a shell
有人说docker才是最佳解决方案
参考: http://taobaofed.org/blog/2015/11/17/nvm-or-n/
更多工具
- npm的替代品, yarn, 它可以依赖于.npmrc的配置
- npm-check 可以解决更新依赖问题.