最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 从零开始,用elementui躺坑vue - npm

    正文概述 掘金(高志小鹏鹏)   2021-01-06   553

    npm: node package manager, 翻译成中文就是node包管理工具。随着Node.js的火爆,使用npm共享js代码已经成为每个前端开发者的必备工具。但就现状而言:一部分开发者还只是停留在npm install层面。更有甚者,一言不合就开删, rm -f node_modules。今天就让小编带你去了解npm的基本原理和实践。

    1. npm init

    初始化package.json文件,生成name,version,script等字段。具体说明推荐npm的package.json中文文档

    2. npm install

    依赖管理是npm的核心内容。原理是执行npm install从package.json中安装依赖。

    npm install <package>后,我们可以在node_modules中查看安装的依赖包。虽然开发者只需关注业务中的引用依赖即可。

    这是开发者最常用的指令,clone项目或者新建必须的第一个指令。

    3. npm --save-dev与npm --save

    --save || -S: 运行依赖(发布),将包信息添加到dependencies,是需要发布到生产环境的。

    --save-dev || -D:开发依赖(辅助),将包信息添加到devDependencies,只用于开发环境

    安装依赖时如何判断? 官方说法是:--save-dev我们只在开发时才用得到它,生产部署后则不执行。--save:我们在开发完成后,肯定还要依赖他们,否则就用不了。简单的说:就是如果没有该依赖则程序就跑不起来,则必须使用--save。如vue-router. 如果该依赖只是为了编译、构建、生成文档则使用--save-dev

    4. package-lock.json

    package-lock.json文件的作用是锁定安装时的包的版本号

    4.1 ^: 主版本号控制

    ^是npm默认的版本符号,举个例子

    "requires": {
      "graceful-fs": "^4.1.2",
      "inherits": "~2.0.0",
      "mkdirp": ">=0.5 0",
      "rimraf": "2"
    }
    

    这个符号定义了向后(新)兼容依赖,告诉npm可以安装8.0.33或者一个大于它的版本,但是主要版本为4.x.x的版本

    4.2 ~: 次版本号控制

    ~是次版本号控制,举个例子

    "requires": {
      "graceful-fs": "^4.1.2",
      "inherits": "~2.0.0",
      "mkdirp": ">=0.5 0",
      "rimraf": "2"
    }
    

    与^的区别是,~版本只能规定次版本号2.0.x,仅仅是作用域不同而已

    4.3 >: beta版本

    因此,当我们使用npm install会根据package-lock.json文件进行安装,保证不同环境、不同时间下当依赖是一样的。而不是根据package.json文件。因为pacakge-lock.json给每个依赖都标明了版本、获取地址、哈希值,所以,每次安装都是同一个相同的结果。不管你在什么机器上面或者什么时候安装。

    基于此,我们手动更改package.json文件安装将不会更新包,想要更新则必须指定版本号。如: npm install axious@3.2.0 --save-dev,这种方式来版本更新package-lock.json则可以。

    谨记:不要手动修改package-lock.json

    5. 依赖管理

    1. 不要手动修改package-lock.json文件
    2. 项目组成员首次checkout / clone 项目代码时,应手动npm install一下,确保同步依赖
    3. 小版本升级依赖,可以使用npm update
    4. npm uninstall 删除依赖包
    5. 任何项目组成员在更新package.json, package-lock.json文件后,项目组其他成员应重新拉取,并使用npm install同步更新依赖

    6. npm scripts

    {
     "scripts": {
        "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
        "start": "npm run dev",
        "lint": "eslint --ext .js,.vue src",
        "build": "node build/build.js"
      }
    }
    

    在vue项目中,npm run dev可以说是我们最常见的命令了,也许我们从来都没有过这条脚本命令的原理。今天就让小编初窥一二。详情可以参考阮一峰的npm scripts 使用指南

    上述代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如npm run dev命令对应的脚本就是webpack-dev-server --inline --progress --config build/webpack.dev.conf.js。

    npm的脚本原理非常简单,每当执行npm run,就会自动创建一个shell,比较特别的是,npm新建的这个shell,会将node_modules/.bin子目录加入path变量,执行结束后,在将PATH恢复原样。

    这意味着,当前目录的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。

    7. npm安装失败解决方法

    当clone或者初始化项目时,npm i报错时,不要心急,尝试以下4大步骤,定能搞定

    1.先删除node_modules文件夹 rm -rf node_modules 2.清理npm缓存 npm cache clean --force 3.单独安装失败的npm(这是一步到位的办法。当然也可省略该步骤,直接跳到步骤4----不建议省略) npm i xx 4.安装剩余的npm npm i

    注意:

    1. 谨慎手动删除package-lock.json文件,然后npm i操作,虽然该方法能解决绝大多数npm i安装失败问题,但会造成npm依赖树错误,尤其是多人协作开发时,会出现测试环境运行正常,打包上线后不能工作的问题
    2. 尽可能的不用cnpm,因为会漏掉很多依赖,会产生各种莫名其妙的问题

    8. 参考文献

    1. npm: package.json
    2. 阮一峰的npm scripts 使用指南

    起源地下载网 » 从零开始,用elementui躺坑vue - npm

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元