npm详解

npm(Node Package Manager)是 Node.js 的标准包管理器。随同Node.js一起安装的包管理工具,它让开发者能够方便地共享和重用代码,可以说是Node.js生态系统中非常重要的一部分。

通过npm,开发者可以轻松地安装、更新、发布以及管理Node.js的包和依赖项。它允许开发者从npm仓库中下载别人编写的包到自己的项目中,并且可以管理这些包的版本依赖关系。此外,开发者也可以将自己编写的包发布到npm仓库,让其他开发者使用。

npm不仅仅用于Node.js的包管理,它也被广泛应用于Web前端开发,因为大多数现代的前端开发项目都使用npm来管理JavaScript的依赖包。

总而言之,npm是一个强大的工具,为Node.js和Web前端开发提供了便利的包管理功能,极大地促进了代码共享和项目协作。

npm 管理项目依赖的下载。

安装所有依赖

如果一个项目有一个 package.json 文件,通过运行

javascript 复制代码
npm install

安装单个包

你还可以安装特定的包,通过运行

javascript 复制代码
npm install <package-name>

此外,从 npm 5 开始,此命令将 <package-name> 添加到 package.json 文件依赖。 在版本 5 之前,你需要添加标志 --save

通常你会看到更多的标志被添加到这个命令中:

  • --save-dev 安装并添加条目到 package.json 文件开发依赖
  • --no-save 安装但不添加条目到 package.json 文件依赖
  • --save-optional 安装并添加条目到 package.json 文件可选依赖
  • --no-optional 将阻止安装可选依赖

也可以使用标志的简写形式:

  • -S:--save
  • -D:--save-dev
  • -O:--save-optional

devDependencies 和 dependencies 之间的区别在于前者包含开发工具,如测试库,而后者与生产中的应用打包在一起。至于 optionalDependencies 的不同之处在于,依赖的构建失败不会导致安装失败。 但是你的程序有责任处理依赖的缺失

更新包

更新也很容易,通过运行

javascript 复制代码
npm update

npm 将检查所有包是否有满足你的版本控制约束的更新版本。

你也可以指定要更新的单个包:

javascript 复制代码
npm update <package-name>

版本控制

除了普通下载,npm 还管理 版本控制,因此你可以指定任何特定版本的软件包,或者要求比你需要的版本更高或更低的版本。

javascript 复制代码
npm install <package-name>@<version>

运行任务

package.json 文件支持指定命令行任务的格式,可以使用

javascript 复制代码
npm run <task-name>

{

"scripts": {

"watch": "webpack --watch --progress --colors --config webpack.conf.js",

"dev": "webpack --progress --colors --config webpack.conf.js",

"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"

}

}

javascript 复制代码
$ npm run watch
$ npm run dev
$ npm run prod
相关推荐
yume_sibai3 分钟前
Vue 插槽
前端·javascript·vue.js
O败者食尘D23 分钟前
【Vue2】结合chrome与element-ui的网页端条码打印
前端·vue.js·chrome
橘颂TA1 小时前
【C++】C++11特性的介绍和使用(第三篇)
前端·c++·算法·c++11
爷_8 小时前
字节跳动震撼开源Coze平台!手把手教你本地搭建AI智能体开发环境
前端·人工智能·后端
charlee449 小时前
行业思考:不是前端不行,是只会前端不行
前端·ai
Amodoro10 小时前
nuxt更改页面渲染的html,去除自定义属性、
前端·html·nuxt3·nuxt2·nuxtjs
Wcowin10 小时前
Mkdocs相关插件推荐(原创+合作)
前端·mkdocs
伍哥的传说11 小时前
CSS+JavaScript 禁用浏览器复制功能的几种方法
前端·javascript·css·vue.js·vue·css3·禁用浏览器复制
lichenyang45311 小时前
Axios封装以及添加拦截器
前端·javascript·react.js·typescript
Trust yourself24311 小时前
想把一个easyui的表格<th>改成下拉怎么做
前端·深度学习·easyui