乐趣区

关于node.js: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.js

var y = 0
console.log(y)
"scripts": {
  "script1": "node script1.js",
  "script2": "node script2.js"
}

如果是并行执行(即同时的平行执行),能够应用 & 符号。

$ 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’

退出移动版