基础
yuhuo2022-08-18JavaScriptNodeJs
安装
在 Node.js 中文网 下载并安装 NodeJs,设置环境变量如下:
Path = "D:\Software\nodejs\node_global"
# ??
NODE_PATH = "D:\Software\nodejs\node_global"
版本管理
GNVM 是使用 Go 语言编写的 Node.js 多版本管理器。
在 GNVM 官网 下载 gnvm.exe 文件,保存到 NodeJs 目录。
gnvm version # 查看 gnvm 版本
gnvm config noderoot # 查看 nodejs 目录
gnvm config registry # 查看当前 nodejs 下载源
gnvm config registry TAOBAO # 配置下载源,内置 DEFAULT 和 TAOBAO 两个库
# 关键词:lastest 最新版本,global 当前使用版本
gnvm ls # 查看本地所有node版本
gnvm install 10.15.1 14.2.0 # 下载多个 nodejs 版本
gnvm uninstall 10.15.1 14.2.0 # 卸载多个 nodejs 版本
gnvm use 10.15.1 # 切换指定 nodejs 版本
gnvm update latest # 下载 nodejs 最新版本,并指定为 lastest
注意
使用 gnvm 下载 node 太慢时,可以到 node淘宝镜像 手动下载node.exe,放至对应版本文件夹。
切换 Node.js 版本时,需要切换 npm 到对应版本,具体参考:以往的版本 | Node.js (nodejs.org)。
运行
1. 运行 js 文件
node xx.js
2. 运行 REPL 模式
node
特殊变量:在某些代码之后输入 _
,则会打印最后一次操作的结果
点命令:
.help
:显示点命令的帮助.editor
:启用编辑器模式,ctrl-C 取消,ctrl-D 运行.break
:中止多行表达式(等同 ctrl-C).load xx.js
:运行js文件.save xx.js
:将会话内容保存成 js 文件.exit
:退出 REPL(等同两次 ctrl-C)
3. 运行可执行文件
# 运行当前项目可执行文件,放在项目下 node_modules\.bin 中
npx cowsay 哈哈哈
# 运行全局可执行文件,放在 npm config get prefix 指定的目录中
cowsay 哈哈哈
可执行文件配置
#!/usr/bin/env node
// 可执行文件,第一行需要如上标志
console.log(process.argv);
// pakeage.json
{
// 配置可执行文件
"bin": {
"yho": "bin/yho.js"
}
}
说明
假设 A 项目中配置了可执行文件命令 yho 以及对于文件路径 bin/yho.js,发布到npm上。
A 包安装在当前项目时,在当前项目 node_modules/bin 文件下会存放 A 包生成的当前项目可执行文件。通过运行 npx yho 或运行 script(如 “dev”: "yho xx --xx",npm run dev)的方式运行可执行文件,可以减少在当前项目中新建文件调用A包的过程,简化流程。
A 包安装在全局时,在全局目录下存放 A 包生成的全局可执行文件,作为全局工具可以在任意项目中运行。
4. 运行 scripts
// package.json
{
"scripts": {
"demo1": "node topic/nodejs/demo1.js", // 运行js文件
"demo2": "cowsay 哈哈哈", // 运行可执行文件
"demo12": "npm run demo1 && npm run demo2", // 串联多条命令
"predemo12": "echo 前置命令", // 前置命令,在目标命令前调用
"postdemo12": "echo 后置命令", // 后置命令,在目标命令后调用
"test": "echo \"Error: no test specified\" && exit 1"
},
}
# 运行命令
npm run demo12
package.json
{
// 项目名
"name": "webpack5",
// 版本号【主版本.次要版本.补丁版本】
// 主版本:大变动,向下不兼容
// 次要版本:功能更新,向下兼容
// 补丁版本:修复bug
"version": "1.0.0",
// 关键词,帮助 npm search
"keywords": [ "jquery", "javascript" ],
// 描述,帮助 npm search
"description": "",
// 作者 【npm账户名 <邮箱> (链接)】
"author": "NodeJS中文网 <mail@nodejs.cn> (http://nodejs.cn)",
"author": {
"name": "NodeJS中文网",
"email": "mail@nodejs.cn",
"url": "http://nodejs.cn"
},
// 贡献者
"contributors": ["NodeJS中文网 <mail@nodejs.cn> (http://nodejs.cn))"],
"contributors": [
{
"name": "NodeJS中文网",
"email": "mail@nodejs.cn",
"url": "http://nodejs.cn"
}
],
// 是否私有,私有则 npm 拒绝发布
"private": true,
// 软件主页
"homepage": "https://jquery.com",
// 问题跟踪链接
"bugs": "https://github.com/nodejscn/node-api-cn/issues",
// 模块化类型:module,commonjs(默认)
// 项目中无拓展名或.js的文件都按此配置
// .mjs按module类型,.cjs按commonjs类型
"type": "module",
// commonjs 模块类型的入口文件
"main": "lib/mini-vue.cjs.js",
// module 模块类型的入口文件
"module": "lib/mini-vue.esm.js",
// 配置可执行文件
"bin": {
"yho": "bin/yho.js"
},
// npm发布的文件白名单
"files": [
"dist"
],
// node 脚本
"scripts": {
"demo1": "node topic/nodejs/demo1.js", // 运行js文件
"demo2": "cowsay 哈哈哈", // 运行可执行文件
"demo": "npm run demo1 && npm run demo2", // 串联多条命令
"predemo": "echo 前置命令", // 前置命令,在目标命令前调用
"postdemo": "echo 后置命令", // 后置命令,在目标命令后调用
"test": "echo \"Error: no test specified\" && exit 1",
"prepare": "git config core.hooksPath gitHooks" // install之后自动执行
},
// 通过 npm init -workspace packages/plus(目录和子包名自定义)
// 创建一个子包,生成对应子包目录及其 package.json,
// 并把子包目录添加到父包 package.json 的 workspaces 字段中
// 在 npm install 后,node_modules 生成子包实际目录的软链接,之后就可以正常引入子包
// 环境要求:npm@7+,node@15+
"workspaces": [
"packages/*"
],
// 许可协议
"license": "ISC",
// 运行依赖包
"dependencies": {
"jquery": "3.5.2", // 指定版本
"jquery": "3.5.x", // 3.5.x的最新版本
"jquery": "3.x", // 3.x的最新版本
"jquery": "x", // 最新版本
"jquery": "latest", // 最新版本
"jquery": "~3.5.2", // 3.5.x的最新版本,不低于3.5.2
"jquery": "^3.5.2", // 3.x.x的最新版本,不低于3.5.2
"jquery": ">3.5.2", // 大于3.5.2的任何版本,类似符号:>=,<,<=,=
"jquery": "2.1.0 - 2.6.2", // 两个版本范围之间
"jquery": "< 2.1 || > 2.6", // 规则组合
},
// 开发依赖包
"devDependencies": {
"lodash": "^4.17.21"
},
// 指定运行平台的版本
"engines": {
"node": ">=0.10.3 <0.12",
"npm": ">= 3.0.0"
},
// 代码仓库
"repository": "github:nodejscn/node-api-cn",
"repository": {
"type": "git",
"url": "https://github.com/nodejscn/node-api-cn.git
},
}