基础

yuhuo2022-08-18JavaScriptNodeJs
参考链接

安装

Node.js 中文网open in new window 下载并安装 NodeJs,设置环境变量如下:

Path = "D:\Software\nodejs\node_global"
# ??
NODE_PATH = "D:\Software\nodejs\node_global"

版本管理

GNVM 是使用 Go 语言编写的 Node.js 多版本管理器。

GNVM 官网 open in new window 下载 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淘宝镜像 open in new window 手动下载node.exe,放至对应版本文件夹。

切换 Node.js 版本时,需要切换 npm 到对应版本,具体参考:以往的版本 | Node.js (nodejs.org)open in new window

运行

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
  },
}
Last Updated 2024/3/14 09:51:53