npm一点介绍

52 阅读7分钟
/**
 *  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中使用

    requireimport是两种不同的模块化,两种只能二选一
    import Box from "./Box.js";
    var b=new Box();
    b.play();

    // ES6模块化在node中使用
    // 使用 npm init -y 创建package.json文件,添加 "type": "module",

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){
            // req 请求对象 客户端发送给服务端的 叫做请求对象
            // res 响应对象 服务端发送给客户端的叫做响应对象
            // 侦听开启服务,并且设置端口号是4000,域名是localhost,后面的回调函数是开启服
                 务后执行的函数
        }).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