npm

作者: candy252324 | 来源:发表于2017-02-19 16:04 被阅读0次

npm 是什么? 如何安装 node 应用?

npm是node.js的包管理工具,负责插件的更新、下载、卸载、发布和撤销等,允许用户从npm服务器上下载别人编写的第三方包到本地使用,或者将自己编写的包或命令行发布出去给别人使用。下载了node.js后,npm是其自带的,直接使用npm命令行使用插件即可。

全局安装和本地安装的区别

npm install -g xxx表示全局安装一个node应用,可以在任何文件目录下使用这个包的命令。本地安装就是安装到指定的文件目录下,使用的时候只有在这个目录下才能使用。

--save 和 --save-dev 有什么区别?

  • npm install --save app安装的是正式使用时依赖的包,在package.json的dependencies参数里可以找到,也可简写成npm install -S app
  • npm install --save-dev app安装的是开发或者测试时依赖的包,在package.json的devDependencies参数里可以找到,也可简写成npm install -D app

package.json 有什么作用?

npm init命令生成package.json文件,这个文件定义了项目所需的各种模板及相关配置信息。

{
    "name": "my_package",     //项目名称
    "version": "1.0.0",  //项目版本号
    "main": "index.js", //入口文件
       // bin参数是{ 命令名:文件名 }的格式,指定了各个内部命令对应的可执行文件的位置,相当于在user.local/bin下创建一个快捷方式
      // 执行`server`,`mock`或`server-mock`命令时,将运行对应文件(./bin/server)
      // ./bin/server文件头部需添加 #!/usr/bin/env node, 表示将以node运行这个文件
    "bin":{    
        "server":"./bin/server",
        "mock":"./bin/mock",
        "server-mock":"./bin/server-mock"
    },
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",    //一般默认一个test的空文件夹、用作写测试代码,`npm test`即可运行。
        "make":"echo 'hello world!' "  //自定义的命令名需加run才能与运行,`npm run make`
    },
    "keywords": [],  //项目的关键词。 一般用不到,发布npm才用得到。
    "author": "candy", //作者名称
    "license": "ISC", //协议 
    "repository": {  // 用来存放到 版本管理远程服务。 发布npm才有用
        "type": "git",
        "url": "https://github.com/ashleygwilliams/my_package.git"
    },
    "dependencies": {   // 正式使用时依赖的包, npm install --save xxx 生成
        "my_dep": "^1.0.0"
    },
    "devDependencies" : {//开发或者测试时,依赖的包。npm install --save-dev xxx生成
        "my_test_framework": "^3.1.0"
    }
    "bugs": {  //同repository
        "url": "https://github.com/ashleygwilliams/my_package/issues"
    },
    "homepage": "https://github.com/ashleygwilliams/my_package"  //项目主页、 发布才有用
}

nodule_modules的查找路径是怎样的?

比如需要查找的依赖包叫“easytpl”,它会先在当前目录下查找node_module, 看有没有easytpl文件夹(即easytpl包),如果有的话,会读取easytpl文件夹下的package.json,找到里面的main参数,加载main里对应的路径的文件。如果当前目录下没有node_module,或当前目录下的node_module没找到easytpl,便向上级目录中查询,直到系统根目录。

npm3与 npm2相比有什么改进?yarn和 npm 相比有什么优势?

npm3相比npm2主要改进了依赖管理方案

  • npm2安装依赖的时候比较简单直接,直接按照包的依赖的树形结构下载填充至本地目录,缺陷在于太深的目录树结构会严重影响效率,甚至在window下可能会超出系统路径限制的长度,另外有删node_modules目录经历的可能都漫长的等待。
  • 针对 npm2 的问题,npm3 加了点算法,直白的解释就是:npm install 时会按照 package.json 里依赖的顺序依次解析,遇到新的包就把它放在第一级目录,后面如果遇到一级目录已经存在的包,会先判断版本,如果版本一样则忽略,否则会按照 npm2 的方式依次挂在依赖包目录下



    在包版本差异化不太严重的情况下,这种构建方式会几乎把所有包放在一级目录下,很大程度下提升了效率以及节省了部分磁盘空间。
    但是npm3又遇到了新问题,有可能开发环境和测试环境的node_modules的目录结构不一样,以及其他因素,faceboook开发了yarn来替代npm。

  • yarn优点在于只要通过Yarn安装过的套件都会在本地目录产生Cache,也就是说只要安装过依次,下次重新安装都会从Cache重新读取, 安装速度会提升很多。

相关文章

  • Vue-cli环境安装

    1:升级npm #查看npm的版本$ npm -v #使用npm升级npm的版本$ npm npm install...

  • NPM指令

    NPM指令 升级npm npm install npm -g 安装模块 npm install

  • Node 的生态NPM

    npm i 【npm install】 安装 npm install npm -g npm的三个部分 npm 官网...

  • npm

    一、npm 发包相关指令 npm adduser npm publish npm update npm versi...

  • node、npm 常见操作

    node、npm 查看版本 $ node -v$ npm -v npm 升级 $ npm i -g npm@latest

  • NPM 常用命令

    这里介绍的命令有如下: npm -v npm init npm install npm list npm unin...

  • npm 常用命令

    查看所有配置 npm config list 查看npm版本 npm -v 升级npm版本 npm install...

  • npm 常用命令

    npm init npm install jquery npm i jquery npm uninstall jq...

  • vue-cli中使用vue-router实例

    一、安装(npm)1、安装相关包 npm install npm //更新npm到最新版 npm in...

  • npm安装的node如何升级?

    1.升级npm npm install -g npm 2.清除npm缓存 npm cache clean -f 3...

网友评论

      本文标题:npm

      本文链接:https://www.haomeiwen.com/subject/fsegittx.html