3. 使用 Farm 构建生产项目
默认情况下,Farm 已启用对生产版本的以下功能的支持:
Tree Shake
:裁剪和过滤不相关的模块和代码压缩
:压缩并混淆输出资源,有效减小产物体积。自动注入Polyfill
:默认情况下 Farm 降级到现代浏览器(ES7),如果需要旧版浏览器支持,请配置targetEnv
自动局部打包
:根据依赖关系和大小,对项目进行局部打包。 对于每个资源请求,会生成大约25个资源,以保证并行加载性能,并尽可能提高缓存命中率。
配置输出目录
在 package.json
中添加构建脚本:
package.json
然后执行npm run build
,构建的资源将被生成到build
目录
如果您想自定义资源生成的路径,您可以使用:
对于上面的示例,所有js/css
将被发送到build/assets/
(例如:build/assets/index-ea54.abbe3e.js
)。 所有静态资源(例如图像)都将发送到build/static
(例如:build/static/background.png
)
预览构建的资源
资源构建完成后,您可以通过npm run Preview
进行预览:
打开http://localhost:1911/
来预览项目。
浏览器兼容性
默认情况下,Farm 将项目构建到本机支持async/await
的现代浏览器:
- Chrome >= 62
- Firefox >= 63
- Safari >= 13.1
- Edge >= 79
可以使用 output.targetEnv 来配置目标浏览器:
在上面的例子中,Farm 会将语法降级为 es5
并自动注入 polyfill。 然后我们必须安装core-js@3
来进行polyfill
注入:
备注
- 如果您的目标是旧版浏览器,则需要手动安装
core-js@3
。 - 如果你想更精确地配置浏览器目标,请参阅语法 Downgrade 和 Polyfill
配置 Tree Shake 和 Minify
出于性能原因,像treeShake
和minify
这样的生产优化在development
中默认被禁用
,而在生产
中默认被启用
。 但如果手动配置了treeShake
或minify
,则无论development
或productive
都将使用默认值。
有关 Tree Shake 和 Minify 的详细信息,请参阅:
配置局部打包策略
备注
详细信息参考局部打包。
Farm 已经启用了打包的最佳实践,请确保您确实需要手动配置打包策略,参考局部打包 了解详情。