/**
* npm
* 后续我们使用第三方模块, 绝对离不开 npm
* npm 就相当于是我们代码中的 XXX软件管家, 帮助我们 下载/安装 一些 第三方模块
*
* npm 只要我们电脑安装了 node, 那么一定会自带一个 npm, npm 的版本可能会随着 node 版
本的不同, 而产生差异
*
* 测试指令: npm -v (终端的地址无所谓)
*
*
* 1. 初始化一个本地仓库 记录器 (此时一定要将终端的路径设置为我们项目的根目录)
* npm init 创建一个本地仓库记录器, 并且我们可以设置记录器内的内容
* npm init -y 创建一个本地仓库记录器, 内部的内容全部按照默认值处理
*
* 2. 利用 npm 安装一个 第三方包
* 示例:
* npm install 第三方包名
* npm i 第三方包名
* npm i lodash
* 安装成功后 项目中的 package.json 会多一个 dependencies
* 内部记录我们刚才安装的第三方包
* 并且 在项目中还会多一个文件 package-lock.json
* 这个文件内部会记录我们的 第三方包的详细版本
* 最重要的是我们的项目中会多一个 文件夹 node_modules
* 内部存放我们刚才安装的 第三方包
*
* 3. 修改 npm 源
* npm 默认的下载地址是国外的服务器, 可能比较卡顿
* 推荐使用 cnpm 或者 npm (修改为 淘宝源)
*
* 最推荐 npm (修改为 淘宝源)
*
* 指令: npm config set registry https://registry.npm.taobao.org/
*
* 4. npm 查询能够安装的版本
* npm view 第三方包名 versions
*
* 5. npm 安装指定版本
* npm i 包名@x.y.z
*
*
* 6. npm 安装全部安装包
* 将来我们去公司中可能是二次开发, 基于别人已经写了一半的项目, 添加一些新需求
*
* 此时我们需要先拿到公司的代码, 然后才能做一些额外的操作
*
* 1. 拿代码 (等以后学完 git 再说)
* 2. 拿到代码后, 代码中需要很多第三方模块
* => 但是因为 node_modules 非常占内存, 所以一般我们不会保留 node_modules
* => 所以你拿到的代码需要第三方模块, 但是没有下载, 你需要将之前用到的所有
第三方模块全部安装下来
* => 此时可以利用一个非常便捷的指令:
* npm install
* npm i
*
* 所以从现在开始, 只要项目中有 node_modules 不管是工作还是学习
* 如果需要将代码发送给别人, 请保留好 package.json 然后删除 node_modules
*
* 同时将来在开发中, 尽量不要修改 package.json 中的内容, 除非是安装一些新的第三方包
*/
nrm 插件名
切换镜像链接
npm i nrm -g
nrm ls 查看镜像列表
nrm use 镜像名 使用某个镜像
nrm use taobao
nrm test 镜像名 测试镜像的速度
npm 2
初始化npm配置文件 会自动产生一个package.json文件
npm init -y
package.json
{
"name": "1206",
项目名,不能使用中文,不能有大写,不能有空格可以使用@ / 作为连接符,项目如果要发布
到npm上时,需要确定在npm上没有重名的名称
"version": "1.0.0",
版本 1.2.3
1大版本 主要是当项目做了大的重构,或者基于nodejs版本发生改变
2 小版本 代码添加部分新的内容
3 微型版本 项目代码有bug需要修改后
"description": "",
描述 描述软件的功能
"main": "index.js",
主执行入口程序
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
脚本
"type": "module",
使用node时,使用module模块开发还是使用commonjs模块开发
"dependencies": {},
项目依赖 做好的项目最后会打包上线,会把所有这里描述的模块全部打包在一起并且放在线上,实
际项目中必须存在的包
"devDependencies": {},
开发依赖 只在开发时使用的包,上线时,并不做统一打包
"config": {},
配置数据,当使用node时,可以通过参数获取到所有的配置数据
"keywords": [],
关键词列表 如果需要把包放在npm上,希望其他用户能够搜索到,需要填写关键词
"author": "",
作者
"license": "ISC"
版权
}
ES6模块化在node中使用
require和import是两种不同的模块化,两种只能二选一
import Box from "./Box.js";
var b=new Box();
b.play();
npm 2 安装包
npm install 包名
全局安装包 主要用来安装cli命令行工具
npm i 包名 -g
npm i nrm -g
npm i yarn -g
npm i cnpm -g
安装项目依赖
npm i 包名
npm i 包名 --save
npm i 包名 —S
安装开发依赖
npm i 包名 --save-dev
npm i 包名 -D
指定包的版本
npm i 包名@版本
清除缓存 当下载一半失败时,清除缓存
npm cache verify
npm cache clean -f
查看已经发布所有包对应的版本
npm view 包名 versions
包的说明文件 包括包的依赖,包括作者的邮箱,包括版本的说明
npm view 包名
查看当前包的树形结构
npm ls 包名
根据package.json中项目依赖和开发依赖的描述内容更新当前的包
npm i
项目依赖和开发依赖中
"jquery":"^1.0.0" 锁定大版本,可以下载所有该大版本下最新的所有小版本和微型版本
"jquery":"~2.1.0" 锁定小版本 可以下载当前指定的大版本和小版本下的最小的微型版本文件
"jquery":"1.0.0" 锁定所有版本 将所有版本锁定只下载这个版本
"jquery":"*" 更新最新 不建议使用,下载最近的版本
npm i 包名1 包名2 包名3.. 安装多个包
npm update和npm i相似的
删除对应的包
npm uninstall 包名 -g
npm uninstall 包名 -S
npm uninstall 包名 -D
package.json 与 require
在package.json中的scripts添加 脚本名:执行的代码
然后可以使用 npm run 脚本名
"scripts": {
"a":"node ./a.js"
},
当使用脚本时,可以在package.json中配置config内容 属性名:值
"config": {
"name":"xietian"
},
当使用 npm run 脚本名时,在代码中可以通过 process.env.npm_package_config_属性名
获取到package.json配置的属性值
console.log(process.env.npm_package_config_name);
引入http的API
var http=require("http");
http.createServer(function(req,res){
务后执行的函数
}).listen(4000,"localhost",function(){
console.log("服务已开启")
console.log("aadd")
})
ctrl+c停止服务
nodemon 根据修改文件就会自动重新服务
npm i nodemon -g
nodemon a.js
尽量不要安装在全局中,使用下面的方法
在当前项目的开发依赖中安装nodemon
并且在脚本中使用
"scripts": {
"a":"nodemon ./a.js"
},
当执行脚本 npm run a时,就会先搜索当前项目的node_modules文件夹中是否有nodemon这个
命令,所以可以直接使用
在脚本中脚本名可以随便起,但是有一个系统的脚本名
自定义的脚本名必须使用npm run 脚本
系统默认的脚本名(start)可以直接使用 npm 脚本名
start start可以用于随时开启
install install 当执行npm i先下载模块,然后再执行install的脚本
当脚本执行时,没有给入要执行的文件时,默认执行main中设置文件名,(npm run serve)这
种情况
"main": "index.js",
"scripts": {
"start":"nodemon ./a.js",
"install": "nodemon ./a.js",
"dev":"nodemon ./a.js",
"serve":"nodemon"
},
通过在脚本中设置参数传入可以在process.env找到对应的参数值
PORT=4000 传参给入到js中
console.log(process.env.PORT);
"scripts": {
"start":"nodemon ./a.js",
"install": "nodemon ./a.js",
"dev":"nodemon ./a.js",
"serve":"nodemon",
"a":"PORT=4000 nodemon ./a.js",
"b":"PORT=4001 nodemon ./a.js"
},
var http=require("http");
http.createServer(function(req,res){
}).listen(process.env.PORT,"localhost",function(){
console.log("当前服务的端口号是"+process.env.PORT);
})
(安卓系统) 在window中如果需要设置参数,需要下载插件cross-env 然后加在这个脚本的前面
"c":"cross-env PORT=4002 nodemon ./a.js"
nvm -v
nvm -v 苹果中
nvm version window
npm ls 查看安装的node版本列表
安装版本
nvm install 版本
nvm install v16.20.0
nvm install v18.19.0
nvm install v20.10.0
使用指定的版本
nvm use v16.20.0
查看node版本号和npm版本号
node -v
npm -v
卸载指定版本
nvm uninstall v16.20.0