国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Webpack 服務(wù)器端代碼打包的示例代碼

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:29:37
文檔

Webpack 服務(wù)器端代碼打包的示例代碼

Webpack 服務(wù)器端代碼打包的示例代碼:環(huán)境變量 之前,我們在項(xiàng)目里會經(jīng)常使用 process.env.NODE_ENV, 但這個變量對于 webpack打包是有影響的, 在 production 的時候是有優(yōu)化的. 所以, 我們將改用其他的環(huán)境變量來區(qū)別: new webpack.DefinePlugin({ 'process.env
推薦度:
導(dǎo)讀Webpack 服務(wù)器端代碼打包的示例代碼:環(huán)境變量 之前,我們在項(xiàng)目里會經(jīng)常使用 process.env.NODE_ENV, 但這個變量對于 webpack打包是有影響的, 在 production 的時候是有優(yōu)化的. 所以, 我們將改用其他的環(huán)境變量來區(qū)別: new webpack.DefinePlugin({ 'process.env

環(huán)境變量

之前,我們在項(xiàng)目里會經(jīng)常使用 process.env.NODE_ENV, 但這個變量對于 webpack打包是有影響的, 在 production 的時候是有優(yōu)化的.

所以, 我們將改用其他的環(huán)境變量來區(qū)別:

new webpack.DefinePlugin({
 'process.env.NODE_ENV': '"production"',
 'process.env.API_ENV': `"${process.env.API_ENV || 'development'}"`
})

像這樣, NODE_ENV 始終為 production.

而我們實(shí)際開發(fā)/產(chǎn)品環(huán)境, 用 process.env.API_ENV 變量來使用(由于該項(xiàng)目是一個 koa 接口服務(wù)項(xiàng)目, 所以這樣進(jìn)行命名, 可以改成任意的, 你開心就好).

動態(tài)配置打包

注意

我們以前在 node.js 后端項(xiàng)目中, 動態(tài)配置加載一般是這樣寫:

const ENV = process.env.NODE_ENV || 'development';
// eslint-disable-next-line import/no-dynamic-require
const options = require(`./_${ENV}`);

module.exports = options;

為了提高閱讀性, 和可能存在ENV的復(fù)用, 我們會單獨(dú)定義一個變量.

在 webpack 打包的項(xiàng)目中直接這樣做的話, 會產(chǎn)生一個問題. 比如我現(xiàn)在有多個配置:

  • _develpment.js
  • _test.js
  • _production.js
  • _staging.js
  • 即便我傳入的當(dāng)前環(huán)境為 development, 依然所有的配置文件會被全部打包進(jìn)來(只是永遠(yuǎn)不會被執(zhí)行). 那么這樣的話, 就存在敏感信息泄露的風(fēng)險.

    正確的姿勢應(yīng)該是這樣的:

    config/index.js

    // eslint-disable-next-line import/no-dynamic-require
    const options = require(`./_${process.env.API_ENV || 'development'}`);
    
    module.exports = options;
    

    模塊化打包

    比如, 我在項(xiàng)目中有很多個模塊, 處于負(fù)載均衡的需求, 或者是對于客戶定制模塊化產(chǎn)品的需求, 我們需要分模塊進(jìn)行打包, 避免其他模塊(永遠(yuǎn)不會被執(zhí)行的)被打包進(jìn) webpack bundle.

    // config/_development.js
    exports.enabledModules = ['user', 'demo']; 
    // 可能 src 目錄下 還有其他模塊目錄, 如 'manage' 等

    在服務(wù)端加載的時候, 是這樣子的:

    // src/server.js
    // 動態(tài)加載啟用的模塊
    enabledModules.forEach((mod) => {
     /* eslint-disable global-require,import/no-dynamic-require */
     const routes = require(`./${mod}/route`);
     routes.middleware() |> app.use;
    });

    那么就需要 ContextReplacementPlugin 插件來支持了.

    代碼如下:
    new webpack.ContextReplacementPlugin(/src/, new RegExp(`^./(${enabledModules.join('|')})/.*$`))

    進(jìn)階使用

    比如,src目錄下除了各個模塊的目錄, 還有一些通用方法類,鉤子的目錄, 如: lib 和 hook. 這兩個目錄是可能被其他子模塊共同引用的. 在插件正則中修改:

    代碼如下:
    new webpack.ContextReplacementPlugin(/src/, new RegExp(`^./(lib|hook|${enabledModules.join('|')})/.*$`))

    壓縮代碼, 并添加 source-map 支持

    Uglifyjs 或 Uglify-es 其實(shí)對于服務(wù)器端代碼打包并不友好, 可能會導(dǎo)致打包的失敗, 用 babel-minify-webpack-plugin 插件來替代.

    配合 source-map-support 插件來支持源碼的問題定位.

    示例項(xiàng)目源碼: https://github.com/AirDwing/webpack-server-bundle

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Webpack 服務(wù)器端代碼打包的示例代碼

    Webpack 服務(wù)器端代碼打包的示例代碼:環(huán)境變量 之前,我們在項(xiàng)目里會經(jīng)常使用 process.env.NODE_ENV, 但這個變量對于 webpack打包是有影響的, 在 production 的時候是有優(yōu)化的. 所以, 我們將改用其他的環(huán)境變量來區(qū)別: new webpack.DefinePlugin({ 'process.env
    推薦度:
    標(biāo)簽: we webpack
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美成人福利 | 欧美在线综合 | 国产精品 视频一区 二区三区 | 在线亚洲精品国产成人二区 | 久久99精品一区二区三区 | 欧美精品在线观看视频 | 久久99国产精一区二区三区 | 日韩专区欧美 | 日韩欧美片 | 国产九九在线 | 欧美aⅴ在线 | 欧美精品一区二区在线观看播放 | 欧美日韩国产中文字幕 | 精品久久久久国产 | 欧美日韩一区二区三区在线 | 又粗又硬又大又深又爽动态图 | 国产又大又粗又猛又爽的视频 | 国产视频久久久 | 欧洲一区二区三区在线观看 | 久久成人毛片 | 国产一区在线视频 | 日韩第八页 | 国模吧双双大尺度炮交gogo | 最新欧美日韩 | 亚洲色图在线播放 | 精品在线一区二区 | 日韩欧美亚洲国产高清在线 | 亚洲欧美日韩另类在线专区 | 中文字幕有码在线播放 | 欧美精品久久久亚洲 | 亚洲国产精品成人综合久久久 | 另类国产精品一区二区 | a级毛片在线免费观看 | 亚洲精品乱码久久久久久 | 国产第一页精品 | 国产一在线| 亚欧精品一区二区三区 | 日韩免费在线观看视频 | 影音先锋在线视频 | 香蕉视频在线免费看 | 久久a毛片 |