新构建方案

为了解决小程序开发中实时编译较慢的问题,IDE从0.26版本开始引入了新方案,对应IDE“详情-编译构建-极速编译模式”设置项。在新的构建方案中我们去除了 webpack 做为构建底层,采用了更加面向 web 的做法,即基于浏览器动态加载。

因为底层抛弃webpack,大家可能在项目中会遇到如下报错:

  • 在 web 代码中 require nodejs原生模块,诸如 utils, fs等
  1. const fs = require('fs');

nodejs fs解决方法:找到模块对应的web端实现,并安装依赖

  • 在 web 代码中直接使用 nodejs 对象,诸如 Buffer, process 等
  1. console.log('process.pid', process.pid);

nodejs process解决方法:找到对象对应的web端实现,并安装依赖

  • 在代码中使用 webpack api,诸如 require.context, require.ensure 等
  1. console.log('require.context', require.context('components'));

webpack api解决方法: 新方案不使用 webpack 了,自然没有这些 API 了,需要用户调整业务代码解决

  • 老方案中意外暴露的可用模块如moment,在新方案中直接引用将报错:
  1. const moment = require('moment');
  2. console.log(moment().format("MMM Do YY"));

新构建方案 - 图4解决方法:自行安装所依赖的模块

  • 自行使用 babel 编译小程序代码,但缺省相关依赖项解决方法:自行安装所需babel依赖项

  • 自行使用 ts 编写代码,并且通过编译导出了 es2015 代码,但是本质上该 transform 有问题,典型的有 ts -> es 时处理了 import 转换为了 require,但并未处理 default,webpack 通过 改写 require,使得问题不被暴露。解决方法:当前遇到这个情形时,ts -> es 时可以不转 import,或者 转换时处理下 default

若新方案影响到开发,用户可切换至原编译方案:

在详情面板,去勾选“极速编译模式”gravitySwitch

原webpack方案在过渡一段时间后将会下线,推荐用户尽量在新方案中开发,使用过程中有任何疑问欢迎咨询和反馈。

原文: https://docs.alipay.com/mini/ide/gravity