npm系列:package.json

1、关于packag.json的基础知识

这还是我最熟悉的package.json吗?

2、npm发包流程

npm发包流程 - 知乎

3、sh: vue-cli-service: command not found

mac 报错:sh: vue-cli-service: command not found_充电五分钟...-优快云博客

一、在开发npm包,或者库的时候,package.json以下属性的配置很重要:

1)files:定义了哪些文件应该被包括在 npm install 后的 node_modules中(有些文件是自动暴露的),避免一些不必要的文件暴露到 node_modules,比如开发一个组件库或者插件的时候,避免使用方多安装依赖

files值可以是文件夹名称,也可以是具体文件名称

  // 可以
  "files": [
    "src"
  ]
   
  // 不可以,前面不能用绝对路径的写法
  "files": [
    "./src"
  ]

注意:如果在发布的包或者库中,没有在package.json中定义files字段,则会暴露源码

2)dependencies、devDependencies

网上大多数文章说dependecies用于生产依赖、devDependencies用于开发环境依赖(通常是工具类的包),但是在做项目的时候,把依赖都安装到devDependencies时候,生产上项目也是可以正常跑起来。这是为什么呢?

因为webpack不管依赖是放在dependencies,还是devDependencies,只要在项目中引用了相关依赖,那么这些依赖就会出现在webpack的Dependency Graph( 依赖图),在构建的时候,都会把依赖打包进构建结果中

个人感觉:这两个属性的作用主要在于开发插件、组件库的时候,发布npm包时候的区分。当发布了一个npm包即A包,第三方在npm install A包时,会将A包中package.json里面的depengdencies依赖都安装,devDependencies不会安装。这样的话可以最大限度避免第三方重复安装依赖。

举个例子:开发了一个基于Vue的插件,那么这个插件要在Vue搭建的项目中才能使用,即第三方的项目里面一定有安装了Vue依赖。为了避免用户在安装插件A的时候又装了一遍Vue,可以在开发A插件的项目的package.json将Vue定义在devDependencies中并结合peerDependencies就可以实现上面的功能了

3)peerDependencies

在开发npm包的时候,提示宿主环境去安装满足插件A中peerDependencies所指定依赖的包,然后在插件import、require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题,避免依赖重复安装

4)main:指定引用模块的路径

5)name:包名

6)verision:包版本,每次修改内容在发布之前,要修改包版本

7)repository(string,object):代码仓库的地址

二、package.json中字段browser   module     main的优先级

package.json中你还不清楚的browser,module,main 字段优先级 - 浅笑· - 博客园

1、文件优先级:ejs>js

2 、npm包使用环境

1)只允许在客户端使用

2)只允许在服务端使用

3)允许在客户端和服务端使用

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值