Webpack 为每次导入生成 css 文件

Posted

技术标签:

【中文标题】Webpack 为每次导入生成 css 文件【英文标题】:Webpack generate css file for each import 【发布时间】:2020-06-01 20:20:05 【问题描述】:

我正在使用 webpack 和 this 来编译 scss 文件:


  test: /\.scss$/i,
  use: [
    // Creates css files
    
      loader: MiniCssExtractPlugin.loader,
      options: 
        esModule: true,
      ,
    ,
    "@teamsupercell/typings-for-css-modules-loader",
    // Translates CSS into CommonJS
    
      loader: 'css-loader',
      options: 
        modules: true
      
    ,
    // Compiles Sass to CSS
    'sass-loader',
  ],
,

这只会生成一个名为 main 的 CSS 文件。我想为源代码中的每个 SCSS 文件生成一个 CSS 文件,以便实现 CSS 的延迟加载。 我需要一种方法来单独生成它们,并在需要时生成 javascript 以从服务器下载它们。

现在的插件可以做到这一点吗?

【问题讨论】:

【参考方案1】:

我想为源代码中的每个 SCSS 文件生成一个 CSS 文件,这样我就可以 实现 CSS 的延迟加载。

有了这个要求,你就不需要 webpack。 node-sass 包够你用了。

package.json 文件中,您可以像这样配置scripts


    "name": "your_project_name",
    "version": "1.0.0",
    "private": true,
    "dependencies": 
        "node-sass": "^4.13.1"
    ,
    "scripts": 
        "sass": "node-sass -w scss_folder -o css_folder --output-style compressed"
    

解释:

sass: 这是你的命令名

node-sass-w-o--output-stylecompressed:你可以通过上面的链接找到他们的解释。

您的项目结构如下:

Your_project
|
|_ css_folder
|
|_ scss_folder
|
|___ file01.scss
|
|___ file02.scss
|
|_ package.json

在您的项目中,打开命令提示符(或 Mac 上的终端)并输入:

npm run sass

当它准备好收听时,您可以尝试在scss_folder 中创建新的 scss 文件。当你点击ctrl+s(或Mac上的command+s)时,会在css_folder文件夹中生成一个同名的新文件,新文件的扩展名为.css。它也被压缩了。

【讨论】:

以上是关于Webpack 为每次导入生成 css 文件的主要内容,如果未能解决你的问题,请参考以下文章

vuecli webpack 外部js 怎么导入

如何将 CSS 文件导入 webpack?

为啥 webpack 不能导入 PrimeReact CSS 文件?

laravel-mix 生成空(0 字节).css 文件,没有动态导入和 .extract

无法使用 webpack 导入 icomoon 自定义字体

我可以使用 webpack 分别生成 CSS 和 JS 吗?