JavaScript Api
Farm
提供完整的开发服务器、编译器、监听器等 JavaScript Api
, 开发者可以通过引入 @farmfe/core
包来使用这些 Api。
安装 @farmfe/core
包:
- npm
- yarn
- pnpm
npm install @farmfe/core@latest
yarn add @farmfe/core@latest
pnpm add @farmfe/core@latest
Start
Start
方法用于快速启动开发服务器
调用 start
方法之后就可以在当前控制台看见可用的 ip
地址的日志信息, 默认会编译当前目录下的 index.html
文件
类型:
start(options: InlineConfig): Promise<void>
基本示例:
import { start, logger } from "@farmfe/core";
try {
await start(options);
} catch (error) {
logger.error(`Failed to start server:\n ${error.stack}`);
process.exit(1);
}
Build
Build
方法对生产环境进行构建
调用 build
方法之后默认构建浏览器产物, 并且会在当前目录下生成一个 dist
文件夹, 如若需要构建不同环境以及不同版本产物, 例如 node
、node-next
、browser
、browser-es2017
等, 可以通过查看 output targetEnv 来进行配置.
类型:
build(options: InlineConfig): Promise<void>
基本示例:
import { build, logger } from "@farmfe/core";
try {
await build(options);
} catch (error) {
logger.error(`error during build:\n ${error.stack}`);
process.exit(1);
}
Watch
Watch
方法对当前项目的编译进行实时更新, 等同于 npx farm build --watch
, 一般作用于 node
环境
类型:
watch(options: InlineConfig): Promise<void>
基本示例:
import { watch, logger } from "@farmfe/core";
try {
await watch(defaultOptions);
} catch (error) {
logger.error(`error during watch project:\n ${error.stack}`);
process.exit(1);
}
Preview
Preview
方法启动一个预览服务器, 对生产环境产物进行预览, 使用时需要确保已经通过 build
方法进行构建, 并且生成了正确的生产环境产物
类型:
preview(options: InlineConfig): Promise<void>
基本示例:
import { preview, logger } from "@farmfe/core";
try {
await preview(defaultOptions);
} catch (error) {
logger.error(`Failed to start preview server:\n ${error.stack}`);
process.exit(1);
}
Clean
Clean
方法清理 farm
增量构建所产生缓存, 如果您开启了增量构建功能, 那么这个方法可能对您有所帮助
对于目前使用增量构建功能而导致某些不可预知或者未发现的问题所导致的程序崩溃, 可以尝试通过清理缓存来解决问题, 若并不能解决请在 github 上提交 issues
类型:
clean(options: InlineConfig): Promise<void>
基本示例:
import { clean, logger } from "@farmfe/core";
try {
await clean(defaultOptions);
} catch (error) {
logger.error(`Failed to clean cache:\n ${error.stack}`);
process.exit(1);
}
loadEnv
从 .env 文件加载环境变量。
type LoadEnvFunc = (
mode: string,
envDir: string,
prefixes: string | string[] = ['FARM_', 'VITE_']
) => [env: Record<string, string>, existsEnvFiles: string[]];
mode
是development
、Production
或任何字符串。loadEnv
将尝试加载[``.env``, ``.env.local``, ``.env.${mode}``, ``.env.${mode}.local``]
为envDir
。envDir
是.env
文件所在的目录。prefixes
是环境变量的前缀。 默认值为['FARM_', 'VITE_']
。 带有这些前缀的环境变量将自动注入到define
中。
const [env, files] = loadEnv('development', '/path/to/project/env');
// use env
createDevServer
createDevServer
方法用于启动本地开发服务器, 需要先实例化 Server
对象, 传递参数需要 farm
的 compiler
类型:
createDevServer(options: DevServerOptions): Promise<void>
基本示例:
import { Server } from "@farmfe/core";
const server = new Server();
await server.createDevServer(options);
server.listen()
createPreviewServer
创建一个 预览服务器,用于预览生产环境产物
类型:
createPreviewServer(options: DevServerOptions): Promise<void>
基本示例:
import { Server } from "@farmfe/core";
const server = new Server();
await server.createPreviewServer(options);
getCompiler
获取当前开发服务器的编译器实例, 在实例化 Server
的时候需要传递一个 compiler
参数
类型:
getCompiler(): Compiler
基本示例:
import { Server, Compiler } from "@farmfe/core";
const compiler = new Compiler(config);
const server = new Server({
compiler
});
const compiler = server.getCompiler();
close
关闭当前由 createDevServer
开启的所有 Server
以及 Webscoker
服务
基本示例:
import { Server } from "@farmfe/core";
const server = new Server();
await server.createDevServer(options);
server.listen()
await server.close();