更新时间:2024-05-17 15:24:27收藏订阅更新我的文档设置返回文档简介 观看本节视频讲解 开发者可以在项目根目录中创建 mini.project.json ,并通过它来实现项目的编译、开发等相关功能。使用说明●小程序开发者工具 ide 3.0.1 以上版本。●命令行工具 cli 1.4.0 及以上版本。完整属性完整的 mini.project.json format2 有以下属性。属性类型默认值描述formatnumber2固定值compiletype"mini" | "plugin""mini"编译类型,用于区分小程序应用 / 小程序插件。miniprogramrootpath string"./"指定小程序源码的相对路径 (app.json文件所在目录)。 - 当 compiletype 为 miniprogram 时,为应用目录。 - 当 compiletype 为 plugin 时,仅用于小程序插件的预览宿主应用目录。 说明: 开发者无法单独预览小程序插件,为支持该功能支付宝在小程序插件项目中内置了预览宿主应用。 pluginrootpath string-指定插件项目的相对路径 (plugin.json文件所在目录)。 说明: 仅当 compiletype 为 plugin 时有效,用于声明插件目录,以及 plugin.json 的实际查询路径。更多详情可查看 插件开发。compileoptionsobject-编译相关的配置,更多详情可查看下方表格说明。uploadexcludestring[]-用户本地代码上传时需要忽略的文件。 字段接受一个字符串数组。支持 glob 语法。 底层使用 minimatch 3.0.4 版本进行匹配。assetsincludestring[]-用户构建后需要打包至产物中的资产。 字段接受一个字符串数组。支持 glob 语法。底层使用 minimatch 3.0.4 版本进行匹配。developoptionsobject-本地开发的相关配置pluginresolutionobject-插件联调选项scriptsobject-小程序预构建脚本相关的配置compileoptions属性类型默认值描述component2booleanfalse自定义组件是否开启新的生命周期运行模型,更多详情可查看 生命周期。 说明: 如果在 app.json 中开启了 plugins 或 usedynamicplugins 则会强制开启 component2 运行模式。typescriptbooleanfalse小程序是否启用 typescript 支持,更多详情可查看 typescript 和 less 编译。lessbooleanfalse小程序是否启用 less 支持,更多详情可查看 typescript 和 less 编译。treeshakingbooleanfalse是否在生产构建时进行 tree shaking 优化 resolvealiasobject-ide 3.7.5 开始支持路径别名配置, 更多详情可查看 resolvealiasglobalobjectmodestring-小程序全局对象(global/globalthis)访问策略, 更多详情可查看 globalobjectmodetranspileobject-小程序代码转 es5 配置(新), 更多详情可查看 transpileresolvealias使用 resolvealias 配置项可以自定义源文件路径的映射规则。resolvealias 的键表示代码中的文件路径的匹配规则,值表示映射到的真实路径。示例小程序项目路径为 /workspace/todoapp它的 mini.project.json 的内容如下:小程序项目内的 js 文件中引用 resolvealias 中指定了映射规则的路径时会达到以下效果:注意 b/utils 是对项目外的文件的引用,构建将会失败,在这里仅供示例参考。映射规则限制1resolvealias 配置的目标路径都相对于 mini.project.json 所在的目录。2resolvealias 只进行目录级别的别名,因此 resolvealias 的键值都必须以 /* 为结尾。3resolvealias 只对路径进行字符串前缀匹配,不能配置更复杂的规则。4resolvealias 的键不能以 / 为前缀,因为 / 开头的路径在小程序中始终相对于 miniprogramroot/pluginroot,具有比 alias 更高的优先级。5resolvealias 的值不能以 / 为前缀。6如果存在两个规则,其中一个规则是另一个规则的前缀,那么匹配时最具体的键将生效。例如, resolvealias 配置中同时存在 hello/world/* => ./a/* 和 hello/* => ./b/* 两条规则,那么 hello/world/a 会指向 ./a/a,hello/b 会指向 ./b/b生效范围javascript / typescript 文件中的:●import 语句●require() 函数调用acss / less 文件中的:●@import 指令● 函数调用sjs 文件中的:●import 语句axml 文件中的:●●●注意 -所有其他地方所写的路径,如 app.json 等各类 .json 文件中的路径原则上都不会遵循 resolvealias 的配置。 -resolvealias 不会对 node_modules 中的文件生效。globalobjectmode小程序全局对象的访问策略,通过该配置可以控制小程序中访问全局对象 global 以及 globalthis 的表现。使用要求●小程序开发者工具 ide 3.8.1 以上版本●命令行工具 cli 2.0.0 及以上版本可选值值含义legacy禁止访问全局对象enable(推荐)可访问到真实的小程序 javascript 全局对象 global 与 globalthisfake可访问到一个全局挂载的虚拟空对象示例enable (可访问 global/globalthis)fake (global/globalthis 指向虚拟对象)transpile属性类型默认值描述scriptobject-小程序代码转 es5 配置使用要求●小程序开发者工具 ide 3.8.1 以上版本●命令行工具 cli 2.0.0 及以上版本script开启 es2023 的语法支持,并可以通过配置项指定不需要进行编译的文件或文件夹。配置属性类型默认值描述ignorestring[][]通过 glob 规则跳过某些文件/目录的转译ignore 规则转译时,小程序编译器将相对于项目目录(当前项目 mini.project.json 配置文件所在目录) 对 ignore 数组中配置的规则进行 glob 匹配,命中任意 glob 规则的文件都不会进行转译。 如果需要表示不要忽略某些文件,可以添加含有 ! 前缀的反向 glob 规则以包含这些文件的转译,例如以上配置表示忽略当前目录下的 node_modules/ 下的所有文件,但不忽略 node_modules/lodash-es/ 下面的文件常用示例1不编译项目源码以及 node_modules,适用于小程序源码编译到 es5 了的预编译框架2仅编译项目源码,适用于常见前端项目3编译项目源码以及部分 node_modules4编译项目源码以及 node_modules:全都不忽略uploadexclude/assetsinclude以下为小程序构建产物包的默认打包资源。assetsinclude 打包白名单小程序的构建产物包默认只会包含必要的业务产物代码和资源文件,未识别的资源类型不会出现在包内,以减小包体积。 默认打包的资源文件见下:●图片○.png○.jpg○.jpeg○.gif○.svg○.webp●字体○.eot○.woff○.ttf○.woff2○.otf●多媒体○.mp3○.mp4如小程序需要引入自定义的资源文件,可配置 assetsinclude 白名单, 以下配置将会把所有 .aaa 以及 .bbb 后缀的文件也打进产物包内。uploadexclude 打包黑名单小程序上传时,会将本地源码打包传到云端进行构建,除了上方资源文件列表外,源码包还会包含以下内容:●小程序源码文件○.acss○.axml○.js○.json○.sjs●依赖包○node_modules目录如果源码包经过 zip 压缩后,包大小仍然超过 ide 的阈值(当前为20m),上传时会报 包大小超限 的错误。可以根据需要,对云端构建不需要的文件配置 uploadexclude 黑名单,如代码经过了 src > dist 的预编译以及 miniprogramroot 目录之外的 devdependencies 依赖。以下配置表示源码包内将不会包含项目根目录下 src 和 node_modules 目录中的文件。developoptionsdevelopoptions 字段接受一个对象,其属性值见下。属性类型默认值描述hotreloadbooleanfalse是否开启产物热更新。配置后开启模拟器热更新。 支持的范围: - axml - acss - js 文件中的 method parallelbooleantrue是否开启多进程构建。小程序默认使用多进程编译,如果资源占用过大,可以通过 parallel: false 关闭多进程。sourcemapbooleantrueide 3.8.1 开始支持,是否开启生成 sourcemap。本地开发时默认开启 sourcemap ,如果资源占用过大,可以通过 sourcemap: false 关闭 sourcemap。minifybooleantrueide 3.8.1 开始支持,是否开启代码压缩。如果构建耗时过长,或者资源占用过大导致构建失败,可以通过 minify: false 关闭代码压缩。skiptranspilebooleanfalseide 3.8.8 开始支持,是否跳过 es5 转译, 以加快开发时构建速度。lazycompilebooleanfalseide 3.8.8 开始支持,是否按需编译页面, 以加快开发时构建速度。必须在 app.json 中同时开启 lazycodeloading: truedisableparallelbooleanfalse(已废弃,请使用 parallel)是否禁止多进程构建。disablesourcemapbooleanfalse(已废弃,请使用 sourcemap)是否禁止生成 sourcemappluginresolutionpluginresolution 字段接受一个对象,其属性值见下。属性类型默认值描述enablebooleanfalse是否启用调试配置pluginsrecord{}指定插件联调的静态插件版本dynamicpluginsrecord{}指定插件联调的动态插件版本当需要进行 插件快捷联调 时,可以将 enable 设置为 true 并在 plugins 和 dynamicplugins 中配置对应的插件版本信息键值对,key 为插件 appid,value 为插件版本信息,属性见下。 说明:开启快捷联调,仅在 ide 模拟器或真机预览、真机调试等生成的线下版本中生效。属性类型必填描述versionstring是插件联调版本信息一个常见的联调示例见下,表示静态插件 2020111122223333 指定特定联调版本 dev:a.b.c.d。scripts针对预处理的场景, 提供了 precompile 的配置入口,允许用户在编译前/预览前/上传前先执行预处理逻辑。该逻辑会在 ide 以及伙伴、雨燕链路中生效。 scripts 字段接受一个对象,其属性值见下。属性类型执行时机watchstringide 模拟器编译时执行,进程持续存在。beforecompilestringide 模拟器编译时执行,执行后退出 beforecompile 进程。beforepreviewstring真机预览/真机调试前执行beforeuploadstringide 上传前执行触发时机●ide 模拟器编译时:○watch 脚本优先级高于 beforecompile,两者只会执行其一。○watch 模式下,预构建脚本与 ide 构建 server 同时运行。○beforecompile 模式下,ide 构建 server 会等待脚本执行完才启动。●真机预览/真机调试前将执行 beforepreview 钩子。●ide 上传前将执行 beforeupload 钩子。迁移至新项目配置迁移文档请参考 迁移至新项目配置