文件配置
- 1、基本字段
- 2、scripts:指定了运行脚本命令的npm命令行缩写
- 字段,devDependencies字段:
- 字段
- 字段
字面意义上就是一个包的json格式配置文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。
npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。一般来说可以将其分为几部分理解:
1、基本字段
"name": "@lsqblogfe/components-react-restpop",//包名
"version": "1.0.46",//包版本
"description": "",//说明
"author": "", //作者
"license": "ISC", //证书
2、scripts:指定了运行脚本命令的npm命令行缩写
"css": "npx copyfiles -u 1 './src/**/*.css' ./dist/",
"assets": "npx copyfiles -u 1 ./src/assets/*.png ./dist/",
"clean": "rimraf ./dist && rimraf ./types",
"dev": "npm run clean && npm run css && tsc -w",
"build": "npm run clean && npm run css && npm run assets && tsc",
"prepublishOnly": "npm run build"
就比如执行npm run build的时候,会执行clean,复制css、assets文件到./dist文件下,然后编译文件。
字段,devDependencies字段:
dependencies字段指定了项目运行所依赖的模块,devDependencies指定项目开发所需要的模块。
它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
对应版本可以有各种限定
-
指定版本:,安装时只安装指定版本。比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定。
-
波浪号(tilde)+指定版本:不改变大版本号和次要版本号。比如~1.2.2,表示安装1.的最新版本(不低于1.2.2),但是不安装1.。
-
插入号(caret)+指定版本:不改变大版本号。比如ˆ1.2.2,表示安装的最新版本(不低于1.2.2),但是不安装,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
-
latest:安装最新版本。
"devDependencies": {
"@lsqblogfe/core": "^1.3.0",
"copyfiles": "^2.4.1",
"rimraf": "^3.0.2",
"typescript": "^4.6.2"
},
"dependencies": {
"@types/react": "^17.0.24",
"@lsqblogfe/components-react": "^1.2.1-alpha.4",
"tsc": "^2.0.3"
},
用来供插件指定其所需要的主工具的版本,一般用于此项目依赖的模块同时被另一个依赖的模块所依赖,且二者依赖的版本有区别。
最典型的例子就是插件,比如A模块是B模块的插件。用户安装的B模块是1.0版本,但是A插件只能和2.0版本的B模块一起使用。这时,用户要是将1.0版本的B的实例传给A,就会出现问题。因此,需要一种机制,在模板安装的时候提醒用户,如果A和B一起安装,那么B必须是2.0模块。
"peerDependencies": {
"@lsqblogfe/core": "*"
}
字段
main字段指定了加载的入口文件,require(‘moduleName’)就会加载这个文件。这个字段的默认值是模块根目录下面的,如果想要给用户提供多个组件,需要在入口文件将他们都导出。
"main": "dist/",
JavaScript
export * from './Components/List';
export * from './Components/Swiper';
export * from './Components/Footer';
字段
type字段相当于是一个声明,声明了所有文件和参数的类型。
可以手动编写,也可以使用npm init 自动生成。其中只有name和version是必填的,其他配置都是选填