国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

使用webpack打包koa2 框架app

2024-05-06 15:22:11
字體:
供稿:網(wǎng)友

以前在用koa寫server的時候,發(fā)布簡直是噩夢。需要將src里面的全部文件都覆蓋掉,config配置文件也要覆蓋,稍有不慎就會線上報各種各樣的問題,然后就得回退,本地調(diào)好在發(fā)布。偶然看見一篇文章講 如何使用webpack打包koa app ,驚為天人,原來webpack也能打包后臺。這在以前想都沒想過。

關(guān)鍵問題

一:所有node_modules里的模塊都不進(jìn)行打包

webpack的核心功能是將引用的各個模塊打到一個文件里,并會將各種規(guī)范的模塊進(jìn)行統(tǒng)一的模塊化處理(webpack規(guī)范)。

然而node中包含大量的fs、path操作,這些fs和path操作在打包完成后將沒有操作對象,還會報出很多各樣的錯誤。

所以使用webpack打包的核心就是拒絕打包一切node_modules里的模塊,只是將相對路徑引用的文件打包到一個文件里。恰巧我們發(fā)現(xiàn)webapck提供externals屬性來排除掉不需要打包的模塊。

再深入點(diǎn)我們可以發(fā)現(xiàn):像webpack、nodemon、babel-preset-env這樣的模塊是app開發(fā)環(huán)境依賴的包,我們的程序里根本不會require這些模塊。

綜上可以發(fā)現(xiàn):我們只將所有require到的包排除掉就可以了,這個模塊對應(yīng)的也就是package.json里dependencies下的模塊。有關(guān)dependencies和devDependencies的區(qū)別要理解好。

因此我們可以使用externals-dependencies這個插件配合externals屬性實現(xiàn)dependencies的排除工作。

代碼:

const webpack = require('webpack');const _externals = require('externals-dependencies')module.exports = {  ...  externals: _externals(),  ...}

二:target指向node

官方文檔:編譯為類 Node.js 環(huán)境可用(使用 Node.js require 加載 chunk)

代碼:

target: 'node',

三:增加node配置

官方文檔:這些選項可以配置是否 polyfill 或 mock 某些 Node.js全局變量和模塊。這可以使最初為 Node.js 環(huán)境編寫的代碼,在其他環(huán)境(如瀏覽器)中運(yùn)行。

代碼:

node: {
    console: true,
    global: true,
    process: true,
    Buffer: true,
    __filename: true,
    __dirname: true,
    setImmediate: true,
    path: true
},

四:babel配置

為了兼容低版本的node不原生支持async/await的問題。這里babel我使用了babel-preset-env{"modules": false}的配置。此配置會將es6語法轉(zhuǎn)為es5語法,例如let、const轉(zhuǎn)為var。

同時將所有的async/await函數(shù)也轉(zhuǎn)成了polyfill里定義的_asyncToGenerator函數(shù)。

function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 屏南县| 兴仁县| 成武县| 白朗县| 武功县| 鄂州市| 巨野县| 龙江县| 高唐县| 嘉禾县| 镇原县| 循化| 昭苏县| 海盐县| 大同市| 扎鲁特旗| 平陆县| 宁安市| 荔波县| 宁海县| 故城县| 高安市| 昂仁县| 无锡市| 天等县| 巴青县| 镇巴县| 肥乡县| 安庆市| 清原| 综艺| 竹山县| 罗定市| 朝阳区| 屯昌县| 丹东市| 宁波市| 忻城县| 长岛县| 诸城市| 平昌县|