You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PureScript项目生成多份独立JS输出文件?优先Spago方案

如何为PureScript项目生成多页面独立JavaScript文件

一、Spago原生方案(优先推荐)

Spago支持配置多个入口点,无需拆分项目结构,就能生成对应页面的独立JS文件:

  1. 创建页面入口模块
    在项目src目录下,为每个页面单独创建入口模块,比如:
  • src/Page/Home.purs(对应生成home.js)
  • src/Page/Questions.purs(对应生成questions.js)
  • src/Page/Tags.purs(对应生成tags.js)
    每个模块需要包含页面初始化的核心逻辑(比如导出main函数)。
  1. 配置Spago入口点
    修改项目根目录的spago.yaml,添加entrypoints字段,列出所有页面入口模块的路径:
entrypoints:
  - Page.Home
  - Page.Questions
  - Page.Tags
  1. 编译生成文件
    执行基础编译命令:
spago build

编译完成后,output目录下会为每个入口模块生成对应的JS文件。如果需要打包后的独立可执行文件,使用bundle-app命令指定入口和输出路径:

# 单个页面打包
spago bundle-app --main Page.Home --to dist/home.js

可以把批量打包命令放到package.json的scripts里,方便一键执行:

{
  "scripts": {
    "build:pages": "spago bundle-app --main Page.Home --to dist/home.js && spago bundle-app --main Page.Questions --to dist/questions.js && spago bundle-app --main Page.Tags --to dist/tags.js"
  }
}

二、配合打包工具(Rollup/Webpack)

如果需要更复杂的打包逻辑(比如代码分割、资源整合),可以先用Spago编译所有模块到output目录,再通过Rollup或Webpack配置多入口生成文件:

以Rollup为例,创建rollup.config.js:

import purs from 'rollup-plugin-purescript';

export default [
  {
    input: 'output/Page/Home/index.js',
    output: {
      file: 'dist/home.js',
      format: 'iife'
    },
    plugins: [purs({ spago: true })]
  },
  {
    input: 'output/Page/Questions/index.js',
    output: {
      file: 'dist/questions.js',
      format: 'iife'
    },
    plugins: [purs({ spago: true })]
  }
];

执行rollup -c即可生成多个独立的页面JS文件。

注意事项

  • 多个页面的共享代码会被每个bundle重复包含,若要优化体积,可使用打包工具的代码分割功能提取公共模块。
  • 每个入口模块需确保包含可执行的初始化逻辑,保证页面加载时能正常运行。

内容的提问来源于stack exchange,提问作者Hi-Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:37:21