首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vite将JS和CSS捆绑到单个文件中

使用Vite将JS和CSS捆绑到单个文件中
EN

Stack Overflow用户
提问于 2021-06-01 07:36:12
回答 4查看 2.6K关注 0票数 4

我正在苦苦思索如何在我的Svelte项目中从Vite构建一个单独的.js文件,其中包含了我的Svelte项目中构建的所有javascript和CSS。默认情况下,Vite会将应用程序捆绑到一个html文件(这没问题)、两个.js文件(为什么??)和一个.css文件(只是希望将其捆绑到一个js文件中)。

我运行这个非常基本的命令来获得一个入门项目:

npx degit sveltejs/template myproject

我试着添加了几个插件,但是我添加的插件都没有达到我想要的效果。首先,我发现的插件似乎想要创建一个包含所有内容的HTML文件。看起来PostCSS也许能帮上忙,但我不明白我能通过Vite设置什么配置来让它做我想做的事情。

有什么神奇的插件和配置可以输出一个HTML文件和一个js文件,从而将我的Svelte应用程序及其CSS呈现到页面上?

EN

回答 4

Stack Overflow用户

发布于 2021-06-17 13:32:12

我为这个问题创建了一个样板Vite项目:

https://github.com/mvsde/svelte-micro-frontend

也许配置对您的案例有帮助:

代码语言:javascript
复制
import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'

export default defineConfig({
  plugins: [
    svelte({
      emitCss: false
    })
  ],

  build: {
    assetsDir: '',
    sourcemap: true,
    lib: {
      entry: 'src/main.js',
      formats: ['iife'],
      name: 'SvelteMicroFrontend',
      fileName: 'svelte-micro-frontend'
    }
  }
})
票数 2
EN

Stack Overflow用户

发布于 2021-08-27 14:18:19

这对于vite来说不是现成的,但是你可以编写一个快速的插件来实现这一点

代码语言:javascript
复制
const bundle_filename = ''
const css_filename = 'style.css'

defineConfig({
  build: {
    lib: {
      entry: 'src/mycomponent.js',
      name: 'mycomponent.js',
      fileName: () => 'mycomponent.js',
      formats: ['iife'],
    },
    cssCodeSplit: false,
    rollupOptions: {
      plugins: [
        {
          apply: 'build',
          enforce: 'post',
          name: 'pack-css',
          generateBundle(opts, bundle) {
            const {
              [css_filename]: { source: rawCss },
              [bundle_filename]: component,
            } = bundle

            const IIFEcss = `
            (function() {
              try {
                  var elementStyle = document.createElement('style');
                  elementStyle.innerText = ${JSON.stringify(rawCss)}
                  document.head.appendChild(elementStyle)
              } catch(error) {
                console.error(error, 'unable to concat style inside the bundled file')
              }
            })()`

            component.code += IIFEcss

            // remove from final bundle
            delete bundle[css_filename]
          },
        },
      ],
    },
  },
})
票数 2
EN

Stack Overflow用户

发布于 2021-06-22 21:39:25

我也有同样的问题,并能够通过编辑vite.config.ts来修复,如下所示在vite@2.3.8上测试

代码语言:javascript
复制
export default {
  build: {
    rollupOptions: {
      output: {
        manualChunks: undefined,
      },
    },
  },
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67781170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档