Webpack 在输出时禁用图像名称的散列

Posted

技术标签:

【中文标题】Webpack 在输出时禁用图像名称的散列【英文标题】:Webpack disable hashing of image name on output 【发布时间】:2018-01-30 06:47:12 【问题描述】:

在构建我的 angular4 应用程序后,webpack 将我的图像名称从 bg_node_new.png 更改为 bg_node_new.3746bc3ac9b1bf77d2aff2c2df901a48.png

我的 webpack.config 代码是:

(function(module) 

    const path = require('path');
    const npm_cmd = process.env.npm_lifecycle_event;
    const p = !(require('yargs').argv.p || false);
    let config;

    module.exports = function(env) 

        let cmds = npm_cmd.split(":");
        const cmd = cmds.length >= 2 ? cmds[1] : null;
        const mod = cmds.length >= 3 ? cmds[2] : null;
        const aot = cmds.length >= 4 ? cmds[3] : null;

        const options = 
            p:!p,
            mod:mod,
            aot:aot,
            env:env,
            ngv:2,
            ctx:path.resolve(__dirname, "../../../../..")
        
        //console.log(options);

        switch (cmd) 
          case 'app': 
            console.log("Building app");
            config = require('./wp.app')(options);
            break;
          case 'lib': 
            console.log("Building lib");
            config = require('./wp.lib')(options);
            break;
          case 'mod':
            console.log("Building mod");
            config = require('./wp.mod')(options);
            break
          default:
            console.log("Building app");
            config = require('./wp.app')(options);
            break;
        

        return config;
    

)(module);

因此,图像未在我的应用程序中呈现。如何解决这个问题?

提前致谢!

【问题讨论】:

你可以在 webpack 中禁用它。分享你的 webpack 配置。 Look at this 或 this 看看是否能帮助您解决问题。 和其他 webpack 配置 我有 wp.app.js、ap.base.js、wp.lib.js、wp.mode.js、wp.test.js 你能在一些在线仓库上分享这些文件吗? Github 例如? 【参考方案1】:

您可能还需要在 html 加载器中关闭源代码处理

            
            test: /\.html$/i,
            use: [
                
                    loader: 'html-loader',
                    options:  minimize: false, sources: false 
                
            ]
        

【讨论】:

【参考方案2】:

为了解决 React 项目中的问题,我这样设置 webpack.config.js

module: 
    rules: [
        
            test: /\.(png|svg|jpg|gif)$/,
            loader: "file-loader",
            options: 
                name: 'images/[name].[ext]',
            ,
        
    ]
,

【讨论】:

【参考方案3】:

在 OP 发表评论后更新:

在您的 wp.base.js 中,从以下内容中删除 [hash]

const raw_file_loader = 
    test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|otf)$/,
    use: 'file-loader?name=assets/[name].[ext]'


原始答案:

如果你分享你的 webpack 配置,我会更好地回答。但是,请在您的 webpack.config 中找到这样的配置,


  test: /.*\.(gif|png|jpe?g|svg)$/i,
  use: [
    
      loader: 'file-loader',
      options: 
        name: '/images/[name]_[hash:7].[ext]',
      
    ,
  ]

... 并删除 [hash] 部分。保持这样:

name: '/images/[name].[ext]',

【讨论】:

【参考方案4】:

这是因为 Angular 在构建时会进行哈希处理以停止使用,前提是您使用的是 Angular CLI

 ng build --prod --output-hashing none

【讨论】:

感谢您的回答。我们没有使用 Angular CLI :( @Sarav 你在用什么? @Rahul, webpack @Sarav cli 现在也使用 webpack,所以我对它感到困惑 是的,我知道,但他正在使用 webpack.config

以上是关于Webpack 在输出时禁用图像名称的散列的主要内容,如果未能解决你的问题,请参考以下文章

如何根据散列中的键/值查找键/值数据并将其添加到 Redis 中的散列?

php中上传文件的散列内容

设计一个重新散列函数......如何避免相同的散列?

哈希算法与不可篡改的区块链

区块链防篡改的“哈希算法”!

链银学院看完这些,你就彻底理解“哈希算法”了