成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

roadhog 生產(chǎn)環(huán)境支持靜態(tài)文件名加 hash 和 CDN 配置

番茄西紅柿 / 849人閱讀

摘要:?jiǎn)栴}來(lái)源于思路使用來(lái)給文件加使用插件來(lái)給文件加使用插件來(lái)自動(dòng)根據(jù)加的來(lái)引入對(duì)應(yīng)的和并生成文件安裝無(wú)需安裝因?yàn)橐呀?jīng)帶了版,如果自己安裝了版反而可能出問(wèn)題。

問(wèn)題來(lái)源于:https://github.com/sorrycc/ro...

Workaround:

思路

使用 webpack output 來(lái)給 js 文件加 hash

使用插件 extract-text-webpack-plugin 來(lái)給 css 文件加 hash

使用插件 html-webpack-plugin 來(lái)自動(dòng)根據(jù)
webpack 加的 hash 來(lái)引入對(duì)應(yīng)的 css 和 js 并生成 html 文件

安裝

npm i -D ejs-loader html-webpack-plugin webpack-md5-hash

無(wú)需安裝 extract-text-webpack-plugin 因?yàn)?roadhog 已經(jīng)帶了 1.0.1 版,如果自己安裝了 2.x 版反而可能出問(wèn)題。需要額外安裝 ejs-loader 因?yàn)?webpack 配置里會(huì)用到

webpack.config.js

const ExtractTextPlugin = require(extract-text-webpack-plugin)
const HtmlWebpackPlugin = require(html-webpack-plugin)
const WebpackMd5Hash = require(webpack-md5-hash)

module.exports = function (config, env) {
  config.module.loaders[0].exclude.push(/.ejs$/)    // 注 1
  if (env === production) {
    config.output.filename = [name].[chunkhash].js
    config.output.chunkFilename = [chunkhash].async.js
    config.plugins[3] = new ExtractTextPlugin([contenthash:20].css)    // 注 2
    config.plugins.push(
      new HtmlWebpackPlugin({
        template: ejs!src/index.ejs,    // 注 3
        inject: false,
        minify: { collapseWhitespace: true },
        production: true,
      }),
      new WebpackMd5Hash()
    )
  } else {
    config.plugins.push(
      new HtmlWebpackPlugin({
        template: ejs!src/index.ejs,
        inject: true,
      }),
    )
  }
  return config
}

[1] roadhog 默認(rèn)配置把非 特定格式 的文件都用 url-loader 去加載,但是 html-webpack-plugin 需要的 ejs 文件會(huì)變成 base64 編碼,所以要把 ejs 格式加入 loader 白名單,參考

[2] 覆蓋 roadhog 的 配置

[3] roadhog 對(duì) html 默認(rèn)用的 file-loader,這里的 html-webpack-plugin 需要讀取其內(nèi)容作為模板,所以換成 ejs,也就不再需要 index.html

.roadhogrc

{
  "env": {
    "production": {
      "define": {
        "__CDN__": "https://cdn.example.com"
      }
    }
  }
}

.eslintrc

{
  "globals" : {
    "__CDN__": false
  }
}

index.ejs




  
  Example
  
  
  <% if (htmlWebpackPlugin.options.production) { %>
    <%= htmlWebpackPlugin.files.css.map((item) => {
      return ``
    }) %>
  <% } %>



  
<% if (htmlWebpackPlugin.options.production) { %> <%= htmlWebpackPlugin.files.js.map((item) => { return `` }) %> <% } %>

index.js 里去掉 `import ./index.html (如果有的話)

這樣就同時(shí)兼顧了開(kāi)發(fā)環(huán)境和部署環(huán)境使用同一套 html 入口,并且開(kāi)發(fā)環(huán)境使用本地文件,部署環(huán)境使用按照文件內(nèi)容 MD5 命名了的 CDN 文件(方便緩存控制)

參考

http://webpack.github.io/docs...

http://www.cnblogs.com/wonyun...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/33787.html

相關(guān)文章

  • roadhog 生產(chǎn)環(huán)境支持靜態(tài)件名 hash CDN 配置

    摘要:?jiǎn)栴}來(lái)源于思路使用來(lái)給文件加使用插件來(lái)給文件加使用插件來(lái)自動(dòng)根據(jù)加的來(lái)引入對(duì)應(yīng)的和并生成文件安裝無(wú)需安裝因?yàn)橐呀?jīng)帶了版,如果自己安裝了版反而可能出問(wèn)題。 問(wèn)題來(lái)源于:https://github.com/sorrycc/ro... Workaround: 思路 使用 webpack output 來(lái)給 js 文件加 hash 使用插件 extract-text-webpack-plu...

    jsummer 評(píng)論0 收藏0
  • roadhog 生產(chǎn)環(huán)境支持靜態(tài)件名 hash CDN 配置

    摘要:?jiǎn)栴}來(lái)源于思路使用來(lái)給文件加使用插件來(lái)給文件加使用插件來(lái)自動(dòng)根據(jù)加的來(lái)引入對(duì)應(yīng)的和并生成文件安裝無(wú)需安裝因?yàn)橐呀?jīng)帶了版,如果自己安裝了版反而可能出問(wèn)題。 問(wèn)題來(lái)源于:https://github.com/sorrycc/ro... Workaround: 思路 使用 webpack output 來(lái)給 js 文件加 hash 使用插件 extract-text-webpack-plu...

    izhuhaodev 評(píng)論0 收藏0
  • 如何使用webpack架構(gòu)項(xiàng)目——新手教程

    摘要:博主最近在學(xué)習(xí),順便搭建了一個(gè)基于的前端項(xiàng)目架構(gòu)在此寫文記錄一下,同時(shí)教會(huì)新入坑的小伙伴們?nèi)绾卧陧?xiàng)目中玩弄,額玩轉(zhuǎn)。所以開(kāi)發(fā)環(huán)境中會(huì)有一個(gè)目錄用于我們開(kāi)發(fā)還有一個(gè)用來(lái)存儲(chǔ)處理后的的模板文件。 博主最近在學(xué)習(xí)react redux,順便搭建了一個(gè)基于webpack的前端項(xiàng)目架構(gòu),在此寫文記錄一下,同時(shí)教會(huì)新入webpack坑的小伙伴們?nèi)绾卧陧?xiàng)目中玩弄,額!玩轉(zhuǎn)webpack。github...

    sutaking 評(píng)論0 收藏0
  • 從零到一,新建webpack工程

    摘要:指定啟用例如上述代碼,就使用和處理了除了以外的。設(shè)置當(dāng)前的為,同樣這個(gè)配置也可以寫在中。設(shè)置目錄刪除注釋去除空格去除屬性引號(hào)復(fù)制靜態(tài)目錄將所以可能被請(qǐng)求的靜態(tài)文件,分別放在目錄下。結(jié)語(yǔ)本次從零到一,新建了一個(gè)腳手架。 react-sample-javascript 為了實(shí)現(xiàn)一個(gè)可定制化高的react工程,我們往往會(huì)自己搭建一個(gè)react工程。所以本文會(huì)從零開(kāi)始搭建一個(gè)react腳手架工...

    Code4App 評(píng)論0 收藏0
  • React+dva+webpack+antd-mobile 實(shí)戰(zhàn)分享(一)

    摘要:再看本篇文章之前,本人還是建議想入坑的童鞋可以選有來(lái)創(chuàng)建的項(xiàng)目,因?yàn)楝F(xiàn)在和還不成熟,坑相對(duì)要多一些,當(dāng)然如果你已經(jīng)做好跳坑的準(zhǔn)備,那么請(qǐng)繼續(xù)往下走本文適合對(duì)有一定了解的人。 再看本篇文章之前,本人還是建議想入坑react的童鞋可以選有create-react-app來(lái)創(chuàng)建react的項(xiàng)目,因?yàn)楝F(xiàn)在dva和roadhog還不成熟,坑相對(duì)要多一些,當(dāng)然如果你已經(jīng)做好跳坑的準(zhǔn)備,那么請(qǐng)繼續(xù)往...

    ziwenxie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<