如何设置汇总以便 Svelte 项目在保存时自动编译而不被提供?

How to set up rollup so that a Svelte project is automatically compiled on save without being served?

在 Svelte 项目中,package.json 文件中已经设置了三个脚本

"scripts": {
    "build": "rollup -c",
    "dev": "rollup -c -w",
    "start": "sirv public --single"
  },

我从 rollup.config.js 文件中了解到的内容

由于我使用的是 firebase 模拟器,其中包括模拟 public 目录的托管和服务,我正在寻找一种方法,以便在没有服务的情况下保存时仅自动编译 Svelte 项目 ~ 我怎么能实现这个?

编辑:我怎样才能通过修改 rollup.config 来实现这一点呢? "autobuild": "..."可以添加方便切换不同模式吗?

正如您在 default Rollup config file for a Svelte projectplugins 部分中看到的那样,Rollup 有条件地执行以下 3 个步骤:

    // In dev mode, call `npm run start` once
    // the bundle has been generated
    !production && serve(),

    // Watch the `public` directory and refresh the
    // browser on changes when not in production
    !production && livereload('public'),

    // If we're building for production (npm run build
    // instead of npm run dev), minify
    production && terser()

为了防止您的站点被自动提供服务,以及您的浏览器自动刷新,您可以简单地注释掉前两步。在监视标志 (-w) 仍然设置的情况下,如果您使用 npm run dev.

启动项目,您的项目仍会在保存时自动重建

如果你总是希望你的文件缩小,你可以在第三步中删除环境条件。

所以你的 plugins 部分的结尾应该是这样的:

    // In dev mode, call `npm run start` once
    // the bundle has been generated
    // !production && serve(),

    // Watch the `public` directory and refresh the
    // browser on changes when not in production
    // !production && livereload('public'),

    // If we're building for production (npm run build
    // instead of npm run dev), minify
    // production && terser()
    terser()

此外,如果这些更改是永久性的并且您知道您永远不需要热服务内容,则可以删除配置文件顶部附近的 serve() 函数定义,以及删除 import rollup-plugin-livereload 的语句(提供 livereload() 函数)。