欢迎光临散文网 会员登陆 & 注册

package.json——编译要素

2023-08-09 17:02 作者:没用软件开发日记  | 我要投稿

    现代化的打包工具都会根据package.json内的指示开始打包流程,以下是Vue包package.json的简化版示例:

  • main 项目CommonJS模块的入口文件,在没有设置main时那么入口文件就是package.json平级目录下的index.js。

  • module 项目ES模块的入口文件,无默认值,当一个项目同时定义了 main,browser 和 module,像 webpack2+,rollup 等构建工具会感知这些字段,并会根据环境以及不同的模块规范来进行不同的入口文件查找。

  • types 项目 TypeScript 的类型定义的入口文件。

  • unpkg 为项目开启npm的CDN支持,并指定CDN解析路径。访问https://unpkg.com/包名时会重定向到https://unpkg.com/包名@版本/unpkg路径。

  • jsdelivr 为项目启用npm的CDN支持,并指定CDN解析路径。访问https://unpkg.com/包名时会重定向到https://cdn.jsdelivr.net/npm/包名@版本/unpkg路径。

  • config 为包脚本配置参数,上例中会存在一个名为npm_package_config_port的环境变量。

  • files 指定除了package.json,license,README 和main 字段里指定的文件以外需要一同发布的文件。

  • bin 一些包存在可执行文件,这些包希望将这些文件安装到环境变量中,这样这些可执行文件才能得以调用。当这个包被全局安装时该文件将被链接到全局bin目录中,或者将创建一个cmd来执行bin字段中的指定文件。它可以直接通过npm exec或通过npm run-script调用其他脚本时通过名称被链接到该包。

  • exports node 14+可以配置根据条件自动切换的导出路径,在vue的package.json示例中对“.”的配置意为:如果是import vue from "vue"则使用包package.json目录下的index.mjs文件;如果使用const vue = require("vue")写法则使用包package.json目录下的index.js文件。当我们在项目中使用包名引入包的时候,其实是通过包名找到了加载到本地的包的地址,也就是说这里的“.”其实是引入包的根目录地址。除此之外exports配置项还有为路径起别名的能力:当导入路径为“vue/server-renderer”时实际寻找的路径为“vue包所在路径/server-renderer/index.xxx”文件。另外exports配置项最重要的功能是对可访问路径的控制,只有在exports配置项中标明的路径可被外界访问。

  • dependencies 标记了包的运行时依赖,与之相同的还有devDependencies(开发时依赖,例如eslint等之在开发过程中或者打包过程中生效的依赖项)、peerDependencies(同伴依赖,表示当前包依赖于其他包,在安装当前包时会检查项目是否含有同伴依赖,如果没有则会安装到根依赖目录中)、optionalDependencies(可选依赖,是否安装成功都不会有影响)、peerDependenciesMeta(可选同伴依赖)、bundleDependencies(打包依赖,在打包依赖内标注的依赖项会在发布包时被打入发包包内node_modules中将会出现打包依赖相关文件。打包依赖的配置项必须是dependencies、devDependencies声明过的依赖项)

关于项目依赖还有很多信息可以查阅,详见

    package.json | npm Docs (npmjs.com)


package.json——编译要素的评论 (共 条)

分享到微博请遵守国家法律