一:包管理工具npm

72 阅读2分钟

1.npm init命令

npm init 命令是一个逐步构建项目的工具

根据提示填写内容,也可以按提供的默认值一路回车(Enter),最后生成一个package.json配置文件

npm包管理工具1.png

2.npm init -y或npm init -yes

为了省去上面的操作,我们加上 --yes 标志将自动使用默认值 npm init 填充所有选项

$ npm init --yes
$ npm init -y

3.package.json常见属性解释

1. name是项目的名称;
2. version是当前项目的版本号
3. description是描述信息,很多时候是作为项目的基本描述;
4. author是作者相关信息(发布时用到);
5. license是开源协议(发布时用到);
6. private属性:
   private属性记录当前的项目是否是私有的;
   当值为true时,npm是不能发布它的,这是防止私有项目或者模块发布出去的方式;
7. main属性:
   设置程序的入口;
   发布一个模块的时候会用到,比如我们使用axios模块const axios=require('axios');实际上是找到对    应的main属性查找文件的;
8. scripts属性:
   scripts属性用于配置一些脚本命令,以键值对的形式存在;
   配置后我们可以通过npm run命令的key来执行这个命令;
   npm start和npm run start的区别是什么?
     - 他们是等价的;
     - 对于常用的start,test,stop,restart可以省略掉run直接通过npm start等方式运行;
9. dependencies属性:
   是指无论开发环境还是生产环境都需要依赖的包;
   通常是我们项目实际开发用到的一些库模块;
   与之对应的是devDependencies;
10.devDependencies属性:
   一些包在生成环境是不需要的,比如webpack,babel等;
   这个时候我们会通过npm install webpack --save-dev,将它安装到devDependencies属性中;

4. 版本管理的问题

我们会发现安装的依赖版本出现:^2.0.3或~2.0.3,这是什么意思?
   npm的包通常需要遵从semver版本规范:
     - semver:https://semver.org/lang/zh-CN/
     - npm semver:https://docs.npmjs.com/misc/semver
   semver版本规范是X.Y.Z:
     - X主版本号:当你做了不兼容的API修改(可能不兼容之前的版本);
     - Y版本号:当你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本;
     - Z修订号:当你做了向下兼容的问题修正(没有新功能,修复了之前版本的bug;
   ^和~的区别:
     ^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;
     ~x.y.z:表示x和y保持不变的,z永远安装最新的版本;

5. npm install原理解析

npm2.png

npm3.png

6. npm其他命令

卸载某个依赖包:
     npm uninstall package
     npm uninstall package --save-dev
     npm uninstall package -D
强制重新build:
     npm rebuild
清除缓存:
     npm cache clean