在不同项目的开发过程中,会用到许多通用的工具方法,然而每次都要来回的拷贝,不仅浪费时间,还不利于维护。
NPM 介绍
-
安装及验证
npm -v随着
NodeJS的安装就已经存在,可通过以上命令查看其版本号 -
使用场景
1、从
npm服务器拉取第三方包或命令行程序到本地使用2、将自己编写的包或命令行程序上传到
npm服务器供别人使用
NPM 常用指令
-
初始化配置文件
npm init -y在当前目录下生成一个严格的
JSON文件,用来记录包的相关信息 -
安装依赖包
npm i axios --save 或 npm i -S axios npm i nodemon --save-dev 或 npm i -D nodemon前者用于安装项目运行所依赖的模块,后者用于安装项目开发所依赖的模块
-
移除依赖包
npm uninstall [package] -
升级依赖包
npm update [package] -
查看当前项目中已安装的包
npm list -
查看 node_modules 的位置
npm root 查看当前项目的安装位置 npm root -g 查看全局的安装位置 -
查看可以升级的依赖包
npm outdated通过
npm update升级所有红色表示的符合语义化版本规范的依赖包 -
升级 NPM 为最新版本
npm i npm@latest -g
NPM 配置信息
-
查看相关配置
npm config ls -l -
提取部分配置
默认的 npm 下载路径prefix = "C:\\Users\\DELL\\AppData\\Roaming\\npm"默认的 npm 缓存路径cache = "C:\\Users\\DELL\\AppData\\Roaming\\npm-cache"注意:其中 AppData 是隐藏文件夹,在【查看】菜单中勾选【隐藏的项目】才可以看到
NPM 包的源地址
-
查看源地址
npm config ls默认使用
npm的官方镜像仓库registry = "https://registry.npmjs.org/" -
更改源地址
npm config set registry https://registry.npm.taobao.org作用: 使用淘宝镜像仓库,提升包的下载速度
NPM 包的路径更改
-
下载路径
npm config set prefix "D:\npm\download" -
缓存路径
npm config set cache "D:\npm\cache"作用: 缓解 C 盘压力,避免电脑卡顿
Package.json 文件的配置
-
必须的配置项
{ "name": "项目名称", "version": "大版本.次版本.小版本", "main": "index.js" // 指定模块加载的入口文件 } -
描述相关配置
{ "description": "模块的描述信息,便于使用者查找和了解模块的功能", "keywords": ["ES10", "nodejs", "关键字"] }类似于项目的
SEO优化,有利于模块获得更精准的匹配和曝光 -
开发人员相关配置
{ // 一个 author 对应一个人 "author": { "name": "模块的主要作者", "email": "main_author@163.com", "url": "https://github.com/username" }, // 模块的贡献者信息 "contributors": [ { "name": "张三", "email": "zhangSan@163.com", "url": "" }, { "name": "李四", "email": "liSi@163.com", "url": "" } ] }人员的信息描述除以上结构外还可以是一个字符串
-
地址相关配置
{ // 模块的展示主页 "homepage": "https://www.project.com", // 指定一个地址或者一个邮箱,便于使用者反馈问题 "bugs": { "url": "https://github.com/project/issues", "email": "" }, // 模块的代码仓库地址 "registry": { "type": "git", "url": "https://github.com/project" } } -
脚本命令配置
{ "scripts": { "start": "node ./bin/www", "test": "" } }以上命令通过
npm直接执行,其它自定义命令需要使用npm run来执行 -
依赖相关配置
{ // 项目运行所依赖的模块 "dependencies": { "axios": "^0.19.2" }, // 项目开发所依赖的模块 "devDependencies": { "nodemon": "^2.0.2" } } -
指定项目运行的 node 版本范围
{ "engines": ">= 14.0.0" } -
发布模块的相关配置
{ "publishConfig": { "registry": "如果发布到公司内部搭建的私有 npm 仓库,则需要配置地址" }, // 允许推送到 npm 服务器的文件列表,也可指定文件夹 "files": [ "index.js", "package.json", "README.md" ] }防止垃圾文件被推送到
npm服务器 -
静态配置
{ "name": "app", "config": { "port": "8080" } } // Node环境读取属性 process.env.npm_package_config_port用来配置一些不怎么发生变化的属性,比如端口号
代码打包配置
-
配置 webpack.config.js 文件
const path = require('path') module.exports = { mode: 'production', // 指定入口文件 entry: './src/index.js', // 指定出口文件的相关配置项 output: { // 打包文件夹 path: path.resolve(__dirname, 'dist'), // 打包生成的文件名称 filename: 'm-toolset.js', // 设置对外暴露对象的全局名称 library: 'mt', // 打包生成通过 esm、commonjs、requirejs 的语法引入 libraryTarget: 'umd', } } -
入口文件
export { intersection, union } from './array'将编写的所有工具函数通过入口文件暴露给外部
-
配置 package.json 文件
{ "scripts": { "build:watch": "webpack --watch" } }通过
npm run build:watch运行打包命令,生成打包文件
创建并发布一个包
-
注册 NPM 账户
-
规范包的基本构成
包的基本信息
package.json入口文件
index.js包的说明文档
README.md -
发布操作
检验包名是否已存在
npm search [package]通过
npm login登录账户使用
npm publish [package]进行发布 -
注意事项
发布的仓库必须是
NPM的官方仓库或公司内部的私有库在文件
package.json中一定要指定对应的入口文件