webpack簡單實現

2021-10-09 05:33:59 字數 2370 閱讀 8147

,"scripts":,

"keywords":[

],"author":""

,"license"

:"isc"

}

#!

/usr/bin/env node

console.

log(

'mypack start'

);

傳入引數是所有引用的路徑和對應執行函式,函式裡面存了**,通過eval執行

// 自執行函式,modules就是傳入的模組及對應**

(function

(modules)};

// 執行該檔案對應的內容**,裡面若含有呼叫會繼續使用myrequire函式

modules[modulename]

.call

(module.exports,module, module.exports, myrequire)

;// **執行過則會將結果返回

return module.exports;

}// 從入口開始

return

myrequire

("<%-entry%>");

})(// ...其他模組

<

%for

(let i =

0; i < modules.length; i++

)<%}

%>

})

從入口檔案開始讀取檔案,對檔案中的字串匹配require,將require涉及的檔案進行讀取,對每乙個content進行replace校驗,轉化為呼叫自定義函式載入**

// 設定模板所需資料

let entry =

"./src/index.js"

;let output =

"./dist/main.js"

;let script = fs.

readfilesync

(entry,

'utf8');

// 讀取到入口檔案**內容

let modules =

;// 存模組路徑和對應函式

// 遞迴,將所有require替換,並且將所有依賴**轉化為字串

function

setcontent

(content));

// 呼叫函式

return

`myrequire('

$')`;}

)}script =

setcontent

(script)

;

function

styleloader

(csstext)

; `

}function

setcontent

(content)

modules.

push()

;// 呼叫函式

return

`myrequire('

$')`;}

)}

let template =

`// 自執行函式,modules就是傳入的模組及對應**

(function (modules)

};// 執行該檔案對應的內容**,裡面若含有呼叫會繼續使用myrequire函式

modules[modulename].call(module.exports,module, module.exports, myrequire);

// **執行過則會將結果返回

return module.exports;

} // 從入口開始

return myrequire("<%-entry%>");

})( // ...其他模組

<%for (let i = 0; i < modules.length; i++)

<%}%>})`

let result = ejs.

render

(template,);

// 將結果**寫入

fs.writefilesync

(output, result)

;console.

log(

'success'

);

果然,學習一樣技能最好的方式就是實現,原本高深莫策的webpack其實就是將**轉化為了路徑和**塊呼叫函式的對映,在呼叫時使用eval來執行**塊,同事對傳入的引用引數進行更改和使用,而loader就是乙個處理函式,對文字進行處理,通過js插入到文件中,以上為我的一些初體會,如有錯誤歡迎指正,**已上傳至倉庫,倉庫:mypack。

簡單入門webpack

webpack.config.js const path require path const htmlwebpackplugin require html webpack plugin 編譯html模板檔案 const require clean webpack plugin 每次構建前清除dis...

webpack 簡單配置

const extracttextplugin require extract text webpack plugin 打包的css拆分,將一部分抽離出來 const webpack require webpack 引入的webpack,使用lodash const htmlwebpackplugi...

webpack入門很簡單

目錄 什麼是webpack 使用webpack需要安裝什麼 乙個簡單卻又比較全面的例子 為什麼會用webpack 隨著大前端的來臨,傳統的mvc架構中的前端只是乙個會做互動和靜態頁的切圖仔,但隨著web架構的變遷,出於專案日益複雜和業務擴充套件,mv 架構逐漸占領了web的光環,其中三大劍客便是an...