首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExtractTextWebpackPlugin总是输出文件,即使没有任何更改

ExtractTextWebpackPlugin总是输出文件,即使没有任何更改
EN

Stack Overflow用户
提问于 2017-08-21 17:24:59
回答 2查看 86关注 0票数 2

我有一个用Webpack捆绑客户端文件的项目。我们正在使用ExtractTextWebpackPlugin捆绑CSS。问题是,当我编辑javascript文件时,CSS包总是被重新构建,尽管CSS状态绝对没有变化。

我如何捆绑CSS,但只有在CSS文件发生更改时才能这样做?

摘自我的webpack配置:

代码语言:javascript
复制
{
    test: /\.css$/,
    use: ExtractTextPlugin.extract({
        use: 'css-loader'
    })
},

..。

代码语言:javascript
复制
plugins: [
    new ExtractTextPlugin(isDebug ? '[name].css' : '[name].[chunkhash].css')
],
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-25 06:04:02

每当ExtractTextPlugin看到一个具有css扩展名的import语句时,它将自动提取css文件的文本内容--,它是否更改了

如果您正在使用它进行调试,那么请使用style-loaderHMR(Hot Module Replacement)来获得更好的经验,如下所示

代码语言:javascript
复制
 isDebug
        ? {
            test: /\.css$/,
            use: ["style-loader", "css-loader"]
          }
        : {
            test: /\.css$/,
            use: ExtractTextPlugin.extract({
              use: "css-loader"
            })
          }

如果您想使用当前的信任迁移,并且不希望ExtractTextPlugin构建css文件,并且您正在使用import导入javascript文件,那么当css文件中没有任何更改时,您必须删除css文件的import语句。

如果您要在webpack配置条目部分中添加css文件,那么这将很容易,因为webpack允许自定义命令参数,您可以通过导出functionobject中的object配置文件来实现这一点。

代码语言:javascript
复制
//webpack.config.js

module.exports = function(env) {
  return {
      entry: {
        main: env.includeCss 
                             ? 
                               ["./src/index.js", "./src/main.css"]  //build with css
                             : ["./src/index.js"] //build without css
      },
      .
      .
      .
      .
  }
}

您可以通过命令参数传递env.includeCss,如下所示

代码语言:javascript
复制
webpack --config ./webpack.config.prod.js --env.includeCss
//notice --env.includeCss witch will set env.includeCss as true

当您不想编译css文件时,使用--env.includeCss正常运行,不使用--env.includeCss

票数 1
EN

Stack Overflow用户

发布于 2017-08-27 10:16:40

与您的问题没有直接关系,但我注意到您使用[chunkhash]提取CSS。这将使您的css名称更改,即使您没有更改内容在您的CSS文件。

使用contenthash代替。

https://survivejs.com/webpack/optimizing/adding-hashes-to-filenames/#setting-up-hashing

如果使用的是ExtractTextPlugin,则应该使用contenthash。这样,生成的资产只有在其内容发生变化时才会失效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45802647

复制
相关文章

相似问题

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