代码编译 TypeScript

将 JS 代码编译成 ES5

开启此选项,开发者工具将使用 babel 将 JS 代码编译成 ES5 标准的代码,以满足运行在低版本手机系统的要求。

在工具 1.05.2106091 版本之后,原有的ES6 转 ES5 和 增强编译 选项统一合并为将 JS 代码编译成 ES5,此功能和原有的增强编译逻辑一致。如需了解旧版本的文档,请点此查看。

功能说明:

  • 基于 babel7 实现的,使用preset-env,支持最新的ECMAScript语法,编译目标为 {chrome:53, ios:8}

  • 共享Babel辅助函数,默认放在项目@babel/runtime目录,可通过项目配置文件配置

  • 支持async/await语法,按需注入regeneratorRuntime,目录位置与辅助函数一致

  • 文件首行是// use strict disable;时,即可禁用当前文件严格模式;从 1.05.2108172 版本开始,在 project.config.json 中 setting.disableUseStrict 为 true 时,可全局禁用严格模式,无需单个文件分别处理。

  • 可通过项目配置文件指定任意文件、目录不经过编译(如:miniprogram_npm)

  • 原有逻辑支持stage0语法,为了向前兼容,引入了一系列 proposal 插件

  • 关于polyfill,基础库中已经引入了大量的es6相关的 polyfill 可参考文档,增强编译下,新增:Array.prototype.includes(es7)、Object.entries(es8)、Object.values(es8)

样式补全

开启此选项,开发工具会自动检测并补全缺失样式,保证在低版本系统上的正常显示。尽管可以规避大部分的问题 ,还是建议开发者需要在 iOS 和 Android 上分别检查小程序的真实表现。

压缩代码

开启此选项,开发者工具在上传代码时候将会帮助开发者压缩和混淆 javascript 代码,减小代码包体积。

代码保护

开启此选项,开发者工具会尝试对项目代码进行保护,主要是对文件进行扁平化处理并替换 require 引用的文件名,以下情况不适合使用此功能

  1. 对于小程序只有简单页面的情况下,开启此功能效果不佳

  2. 有文件超过 500kb,且其中有使用 require 引用项目中的文件的情况,在运行时可能会报文件没有找到

  3. 动态引用的情况,如 var a = ‘somefile.js’; require(a);

  4. 将 require 函数赋值给其他变量的情况,如 var a = require; a(‘somefile.js’);

  5. 将 require 作为二元运算符的参数的情况,如 require + 1;

  6. 使用 … 运算符且未开启 ES6 转 ES5 的情况

启用多核心编译

在四核及以上的电脑上此选项可见。启用此选项,会充分利用 CPU 资源来编译项目的 JS 代码,提高编译的效率。可以选择关闭此选项。

原生支持编译 TypeScript

工具通过以编译插件的方式,改进了对 typescript 项目支持。

相比起之前 Typescript 项目中会同时存在 ts 文件和 js 文件,新的模板只需要创建 ts 文件即可,无需再生成同名的 js 文件。 新的模板无需在每次编译前执行 npm run tsc 命令。 此外,工具还支持将 less 或 sass 文件编译成 wxss 文件。详细请查看原生支持 TypeScript