2、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)允许在客户端和服务端使用
<