当前位置: 首页 > 后端技术 > Node.js

npm(Areyouafraid)全局安装和本地安装,开发依赖和生产依赖

时间:2023-04-03 14:14:05 Node.js

npm(Areyouafraid)npm(NodePackageManager)是JavaScript世界中的包管理工具,是默认的包管理工具Node.js平台工具。通过npm,您可以安装、共享、分发代码以及管理项目依赖项。(同功能的另一个包管理工具Yarn,速度和用户体验都比老版本的npm好,但是最近新版的npm也下了很大的功夫,和yarn速度和体验的差距越来越小,更小。如果你有兴趣,你可以了解更多)。在过去的几年里,npm可以说是前端猿离不开的利器。刚开始学习使用node和npm搭建前端项目的时候,要理解的概念很多,比如各种命令行,各种新的js语法,各种环境依赖……随便问问,怕不怕?:说实话,刚开学的时候很害怕。废话不多说,现在进入正题,说说npm全局安装和本地安装,开发依赖和生产依赖,先抛出几个常见的疑惑:什么是全局安装,什么是本地安装(或者本地安装,这是下面统称为)本地安装)?为什么要全局安装?为什么又要在本地安装?全局安装和本地安装有什么区别?什么是开发依赖和生产依赖?什么是开发环境和生产环境?全局安装和本地安装1、全局安装:npminstall-g//(这里的-g是-global的缩写)通过上面的命令行(带-g修饰符)安装一个包,这个包叫做global安装。通常全局包都安装在node目录下的node_modules文件夹中。执行以下命令可以查看node、npm的安装目录和全局包的安装目录。whichnode//查看node的安装目录whichnpm//查看npm的安装目录npmroot-g//查看全局包的安装目录npmlist-g--depth0//查看全局安装的包2.本地installation:npminstall(后面可以加几个修饰符,主要是两种--save-dev和--save)通过上面的命令行安装一个包,称为本地安装。包安装在当前项目文件夹下的node_modules文件夹中。3、全局安装的作用:全局安装的包可以提供直接执行命令(例如:gulp-h可以查看gulp定义了哪些命令)。比如全局安装gulp后,直接在命令行执行gulp-v,gulp-h等即可(原理:全局安装的gulp会将其package.json中的bin命令注入到全局环境中,让你全局执行:gulpxxx命令,这是另外一个话题,不深入)。如果gulp只在本地安装,没有全局安装,直接执行这些命令会报错。如果要执行相应的命令,可能需要,例如:node./node_modules/gulp/bin/gulp.js-v(查看版本)来执行一大串命令。所以,全局安装就发挥它的优势了,一个gulp-v就搞定了。当然,并不是每个包都必须全局安装。一般需要在项目中全局安装包定义的命令。比如gulp执行的是gulptasks...等等,所以我们是否需要全局安装取决于我们如何使用这个包。全局安装像全局变量有点粗糙但在某些情况下是必要的,全局包很重要但如果不需要最好避免。4.可以全局安装,所以全局安装,随处使用就够了。为什么需要在本地安装?如果只安装全局不安装本地,就得require('')例:引入一个全局包可能是通过全局路径require('/usr/local/....')包,这显然很不灵活。如果安装了本地包,可以直接require('')导入。一个包通常在不同的项目中重复使用。如果只是全局安装,当一个项目需要更新版本的包时,更新可能会影响其他也引用该包的项目。因此,本地安装可以更灵活的在不同的项目中使用不同版本的包,避免全局包污染的问题。一个经验法则:如果你想使用这个包的命令来执行任务,你需要全局安装它,如果你想通过require导入它,你需要在本地安装它(但是在实际开发过程中,我们不需要考虑一个包是全局安装还是本地安装,因为这个一般在包的官网上都有明确的说明,上面是理解全局安装和本地安装)Developmentdependencies和Productiondependencies跟local上面提到的安装。本地安装主要有两种安装方式:保存到开发依赖(devDependencies):npminstall--save-dev保存到生产依赖(dependencies):npminstall--save"DevelopmentDependencies",as顾名思义,就是开发环境使用的依赖,而“ProductionDependencies”就是生产环境使用的依赖。那么这里又有一个问题:什么是开发环境,什么是生产环境?1.开发环境和生产环境【开发环境】:指的是你的项目还处于编码阶段时的环境。代码中可能还有各种console.log()、注释、格式化等。【生产环境】:指的是你的项目完成编码并发布到网上供用户浏览时的环境。代码可能进行了压缩、优化等等,其实这些概念并没有一个非常明确的定义。接下来我们举一个场景的例子,将“开发环境”和“生产环境”与上面的“开发依赖”和“生产依赖”联系起来,会更容易理解。假设我们在开发过程中使用jQuery。以前可能是在本地下载jQuery插件,然后通过