Node学习总结-----Node 相关工具

二、Node 相关工具 1、NVM: Node Version Manager 切换node版本
1.1 Mac 安装 nvm
https://github.com/nvm-sh/nvm...
2、NPM: Node Package Manager 2.1 全局安装package

$ npm install forever --global (-g) $ forever $ npm uninstall forever --global $ forever

2.2 本地安装package
$ cd ~/desktop $ mkdir gp-project $ cd gp-project $ npm install underscore $ npm list (ls)

2.3 package.json初始化
$ pwd $ npm init -y $ ls $ cat package.json

2.4 使用package.json
$ npm install underscore --save $ cat package.json $ npm install lodash --save-dev $ cat package.json $ rm -rf node_modules $ ls $ npm install $ npm uninstall underscore --save $ npm list | grep underscore $ cat package.json

2.5 安装指定版本的包
$ pwd $ npm list $ npm info underscore $ npm view underscore versions $ npm install underscore@1.8.0 $ npm list $ npm uninstall underscore $ npm list

2.6 更新本地安装的包
$ npm info underscore $ npm view underscore versions $ npm install underscore@1.4.4 --save-dev $ npm list | grep gulp $ npm outdated //~2.0.0表示patch, ^2.0.0表示minor * 表示xx最新版本 $ npm list | grep gulp $ npm update

2.7 清除缓存
npm cache clean --force
2.8 上传自己的包
2.8.1 编写模块 保存为index.js
exports.sayHello = function(){ return 'Hello World'; }

2.8.2 初始化包描述文件
$ npm init package.json

{ "name": "gp19-npm", "version": "1.0.1", "description": "gp19 self module", "main": "index.js", "scripts": { "test": "make test" }, "repository": { "type": "Git", "url": "git+https://github.com/lurongtao/gp19-npm.git" }, "keywords": [ "demo" ], "author": "Felixlu", "license": "ISC", "bugs": { "url": "https://github.com/lurongtao/gp19-npm/issues" }, "homepage": "https://github.com/lurongtao/gp19-npm#readme", }

2.8.3 注册npm仓库账号 https://www.npmjs.com 上面的账号
felix_lurt/qqmko09ijn
$ npm adduser
2.8.4 上传包
$ npm publish

坑:403 Forbidden
查看npm源:npm config get registry
切换npm源方法一:npm config set registry http://registry.npmjs.org
切换npm源方法二:nrm use npm
2.8.5 安装包
$ npm install gp19-npm

2.8.6 卸载包 查看当前项目引用了哪些包 :
npm ls
卸载包:
npm unpublish --force
2.8.7 使用引入包
var hello = require('gp19-npm') hello.sayHello()

2.9 npm 脚本
Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。
一、什么是 npm 脚本?
npm 允许在 package.json 文件里面,使用 scripts 字段定义脚本命令。
{ // ... "scripts": { "build": "node build.js" } }

二、执行顺序
如果 npm 脚本里面需要执行多个任务,那么需要明确它们的执行顺序。
script1.js
var x = 0 console.log(x) script2.jsvar y = 0 console.log(y) "scripts": { "script1": "node script1.js", "script2": "node script2.js" }

【Node学习总结-----Node 相关工具】如果是并行执行(即同时的平行执行),可以使用 & 符号。
$ npm run script1 & npm run script2

如果是继发执行(即只有前一个任务成功,才执行下一个任务),可以使用 && 符号。
$ npm run script1 && npm run script2

三、简写形式
常用的 npm 脚本简写形式。
npm startnpm run start
四、变量
npm 脚本有一个非常强大的功能,就是可以使用 npm 的内部变量。
首先,通过 npm_package_ 前缀,npm 脚本可以拿到 package.json 里面的字段。比如,下面是一个 package.json。
注意:一定要在 npm 脚本中运行(如:npm run view)才可以,直接在命令行中运行JS(如:node view.js)是拿不到值的
{ "name": "foo", "version": "1.2.5", "scripts": { "view": "node view.js" } }

那么,变量 npm_package_name 返回 foo,变量 npm_package_version 返回 1.2.5。
// view.js
console.log(process.env.npm_package_name); // foo
console.log(process.env.npm_package_version); // 1.2.5
上面代码中,我们通过环境变量 process.env 对象,拿到 package.json 的字段值。如果是 Bash 脚本,可以用$npm_package_name 和 $npm_package_version 取到这两个值。
npmpackage前缀也支持嵌套的package.json字段。
"repository": { "type": "git", "url": "xxx" }, scripts: { "view": "echo $npm_package_repository_type" }

上面代码中,repository 字段的 type 属性,可以通过 npm_package_repository_type 取到。
下面是另外一个例子。
"scripts": { "install": "foo.js" }

上面代码中,npm_package_scripts_install 变量的值等于 foo.js。
然后,npm 脚本还可以通过 npmconfig 前缀,拿到 npm 的配置变量,即 npm config get xxx 命令返回的值。比如,当前模块的发行标签,可以通过 npm_config_tag 取到。
"view": "echo $npm_config_tag",
注意,package.json 里面的 config 对象,可以被环境变量覆盖。
{ "name" : "foo", "config" : { "port" : "8080" }, "scripts" : { "start" : "node server.js" } }

上面代码中,npm_package_config_port 变量返回的是 8080。这个值可以用下面的方法覆盖。
$ npm config set foo:port 80
最后,env命令可以列出所有环境变量。
"env": "env"
2.10 npm 安装 git 上发布的包
这样适合安装公司内部的git服务器上的项目 npm install git+https://git@github.com:lurong...
或者以ssh的方式
npm install git+ssh://git@github.com:lurongtao/gp-project.git
2.11 cross-env 使用
2.11.1 cross-env是什么 运行跨平台设置和使用环境变量的脚本
2.11.2 出现原因 当您使用 NODE_ENV=production, 来设置环境变量时,大多数 Windows 命令提示将会阻塞(报错)。(异常是Windows上的Bash,它使用本机Bash。)换言之,Windows 不支持 NODE_ENV=production 的设置方式。
2.11.3 解决 cross-env 使得您可以使用单个命令,而不必担心为平台正确设置或使用环境变量。这个迷你的包(cross-env)能够提供一个设置环境变量的 scripts,让你能够以 Unix 方式设置环境变量,然后在 Windows 上也能兼容运行。
2.11.4 安装 npm install --save-dev cross-env
2.11.5 使用 {
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"

}
}
NODE_ENV环境变量将由 cross-env 设置 打印 process.env.NODE_ENV === 'production'

    推荐阅读