[Vue] 編譯專案不加密圖檔

一般由npm run build出來的圖片都會變成
原始檔名.亂碼(hash碼).png (or .jpg/.svg…)

但如果後續專案由PM或客戶自行維護
這樣的加密檔名可能會增加識別的困難性

以及vue-cli創建的webpack默認會將10kb以下的圖片和字體文件轉為base64
被轉換的檔案就不會出現在目錄img中。如果要替換圖檔,如:替換LOGO檔就沒辦法達成。

說明解決:
輕量圖片檔不轉base64 + 檔名不添加亂碼

Vue2
修改 build/webpack.base.conf.js

module: {
  rules: [
   {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 1, //預設10000=10kb
          name: utils.assetsPath('img/[name].[ext]') //預設 img/[name].[hash:7].[ext]
          }
   },
]}

Vue3

先在package.json 安裝外掛file-loader
修改 vue.config.js

module.exports = {
configureWebpack: {
    module: {
      rules: [
        {
          test: /\.(jpe?g|png|gif|svg)$/,
          use: {
            loader: 'file-loader',
            options: {
              outputPath: 'img',
              name: '[name].[ext]',
              limit:1
            }
          }
        }
      ]
    }
  },
};

若limit設置成20000時就是限制改為20kb

補充: vue-cli有參數是一次性去除js.img有加hash加密亂碼的

module.exports = {
filenameHashing: false, 
}

以上

關於站主

Shiro

因為興趣無限擴張,一直很猶豫要不要寫一個很雜的Blog,後來還是這麼做了。

聯絡:shiro050102✦gmail.com  ✦請自行更換成@

Vue