强制 Snowpack 构建到一个文件中

Posted

技术标签:

【中文标题】强制 Snowpack 构建到一个文件中【英文标题】:Forcing Snowpack to build into one file 【发布时间】:2021-04-07 10:02:20 【问题描述】:

Snowpack 开发非常酷 - 但为了我的需要,我需要所有 js/css/images 完全打包到 一个 bundle.js 文件中。没有块或其他任何东西。

我尝试在snowpack.config.js's 中使用以下 webpack 插件配置 plugins:

    [
      "@snowpack/plugin-webpack",
      
        outputPattern: 
          js: "bundle.js",
          css: "bundle.css",
        ,
        extendConfig: (config) => 
          delete config.optimization.splitChunks;
          delete config.optimization.runtimeChunk;
          return config;
        ,
      ,
    ],

这会导致创建这两个文件:bundle.jsbundle.css

有没有简单的方法:

    只将所有内容打包到 build.js 中而不包含 css 文件? 自动删除仍然留在构建中的所有其他文件 文件夹(__snowpack__web_modules、源文件)?

【问题讨论】:

【参考方案1】:

修改snowpack.config.js如下:

const path = require('path');

module.exports = 
...
    [
      '@snowpack/plugin-webpack',
      
        outputPattern: 
          js: "index.js",
          css: "index.css",
        ,
        extendConfig: config => 
          delete config.optimization.splitChunks;
          delete config.optimization.runtimeChunk;
          config.module.rules[0] = 
            test: /\.js$/,
            exclude: /node_modules/,
            use: [
              
                loader: 'babel-loader',
                options:  presets: ['@babel/preset-env'] 
              ,
              
                loader: path.resolve(__dirname, './node_modules/@snowpack/plugin-webpack/plugins/import-meta-fix.js')
              
            ]
          
          return config;
        
      
    ],
...

npm run build 的输出:

> build
> snowpack build

[snowpack] ! building source files...
[snowpack] ✔ build complete [0.39s]
[snowpack] ! building dependencies...
[snowpack] ✔ dependencies ready! [0.27s]
[snowpack] ! verifying build...
[snowpack] ✔ verification complete [0.00s]
[snowpack] ! writing build to disk...
[snowpack] ! optimizing build...
   Asset      Size  Chunks             Chunk Names
index.js  9.88 KiB       0  [emitted]  index
[snowpack] ✔ optimize complete [1.47s]
[snowpack] ▶ Build Complete!

【讨论】:

以上是关于强制 Snowpack 构建到一个文件中的主要内容,如果未能解决你的问题,请参考以下文章

聊聊 ESMBundle Bundleless Vite Snowpack

snowpack 入门

深度分析前端构建工具:Vite2 v.s Snowpack3 v.s. Webpack5

Snowpack - 将 scss 导入 tsx

Snowpack 无法从 node_modules 导入 JavaScript

如何在 VSCode 中设置 pathMapping 以调试 Snowpack 应用程序