Npm包管理器

114 阅读3分钟

包的使用

在node环境下我们使用第三方包需要使用 require将node_module中的包引入使用文件中

let { why } = require("why");

配置脚本指令

在package.json文件中我们在 scripts字段中配置指令

 "scripts": {
    "dev": "node ./src/main.js"
  },

这个指令可以使用 npm run dev来运行 相当于在控制台上输出 "node ./src/main.js"这段指令

main字段使用

思考为什么使用why第三方包时直接引入 require("why");就行,而不是输入完整路径 require("why/index.js");

因为在node环境中默认index文件为入口文件,所以我们在使用why第三方包的时候默认引入why文件中的index.js文件,在npm 中main字段能帮助我们修改入口文件

例子:

就比如我现在需要将why文件下的index文件修改为main文件

image-20240527154304603

该怎么让why()正常运行

image-20240527174249639

将main字段指定为入口文件的名字就行

此时可以看到

image-20240527174502552.png

why()正常运行

Scripte字段

对于可以省略npm run xxx指令值run的指令 npm start npm stop npm restart npm test可以直接运行

Dependencies

开发依赖

生产依赖

对于以来后面的版本号:

版本规范X.Y.Z:

X是主版本号:到你做了不兼容的API修改(可能不兼容之前的版本)

Y次版本号: 当你做了向下兼容的功能性新增 (新功能增加,但是兼容之前版本)

Z修订号 : 当前你做了向下兼容的修正 (没有新功能,修复来之前版本的bug)

解释一下^和~的区别:

x.y.z: 表示一个明确的版本号;

^x.y.z: 表示X是保持不变的,y和z永远安装最新的版本;

~x.y.z: 表示x和y保持不变的,z永远安装最新的版本;

Npm其他命令

  • 卸载依赖包
    • npm uninstall package
    • npm uninstall package --save-dev
    • npm uninstall package -D
  • 强制重新构建
    • npm rebuild 当你需要将依赖全部更新到最新版本时执行
  • 清除缓存
    • npm cache clean 当你发现npm 体积太大时可以执行该命令释放缓存
    • npm config get cache 获取缓存存储的位置

cnpm工具

解决没办法很好的从registry.npmjs.org下载下来需要的包

  • 查看npm镜像:

npm config get registry

  • 直接设置npm的镜像:

    npm config set registry https://registry.npm.taobao.org

Npx工具

npx的作用非常多,但是比较常见的是使用它来调用项目的某个模块指令.

npx 的作用是将node_modules下的bin文件中的局部指令暂时添加到环境变量中, 例子:

当你全局安装webpack 3.0.0版本,和npm webpack 5.0.0 -D局部安装webpack,

在你项目中的终端使用webpack --version此时版本还是显示3.0.0是应为终端会先去找环境变量中的指令,

但是你使用npx webpack --version此时webpack版本就是5.0.0,是因为npx会暂时将node_modules下bin文件中的指令添加到环境变量中

npm发布

  • 注册npm账号:

  • 在命令行登录

    • npm login
  • 修改package.json

  • 发布到npm registry上

    npm publish

  • 更新仓库:

    • 修该版本号(最好符合(semver规范)
    • 重新发布
  • image-20240528184314478
  • 删除发布的包:

    npm unpublish

  • 让发布的包过期:

    npm deprecate