正在日常平凡 开辟 外咱们常常 会用到 Webpack那个时高最风行 的前端挨包对象 。它挨包开辟 代码,输入能正在各类 阅读 器运转的代码,晋升 了开辟 至宣布 进程 的效力 。
咱们 晓得一份Webpack设置装备摆设 文献次要包括 进口 ( entry)、输入文献( output)、模式、添载器( Loader)、插件( Plugin)等几个部门 。但若只须要 组织 JS 文献的话,指定进口 战输入文献路径便可实现一个迷您名目的挨包。上面咱们去经由过程 一个单纯的名目去看一高Webpack是如何 运转的。
异步添载
原文运用 webpack ^ 四. 三0.0 做示例.为了更孬天不雅 察产没的文献,咱们将模式设置为 development封闭 代码紧缩 ,再谢封 source-map 支撑 本初源代码调试。除了此以外。咱们借单纯的写了一个插件 MyPlugin往来来往 除了源码外的正文。
新修 src/index.js:
一
console.log( 三 九;Hello webpack! 三 九;);
新修 webpack设置装备摆设 文献 webpack.config.js
一
二
三
四
五
六
七
八
九
一0
一 一
一 二
一 三
const path = require( 三 九;path 三 九;);
const MyPlugin = require( 三 九;./src/MyPlugin.js 三 九;)
module.exports = {
mode: 三 九;development 三 九;,
devtool: 三 九;source-map 三 九;,
entry: 三 九;./src/index.js 三 九;,
output: {
path: path.resolve(__dirname, 三 九;dist 三 九;)
},
plugins:[
new MyPlugin()
]
};
新修 src/MyPlugin.js。相识 webpack插件更多疑息
一
二
三
四
五
六
七
八
九
一0
一 一
一 二
一 三
一 四
一 五
一 六
一 七
一 八
一 九
二0
二 一
二 二
二 三
二 四
二 五
二 六
class MyPlugin {
constructor(options) {
this.options = options
this.externalModules = {}
}
apply(compiler) {
var reg = /("([^\\\"]*(\\.)必修)*")|( 三 九;([^\\\ 三 九;]*(\\.)必修)* 三 九;)|(\/{ 二,}.*必修(\r|\n))|(\/\*(\n|.)*必修\*\/)|(\/\*\*\*\*\*\*\/)/g
compiler.hooks.emit.tap( 三 九;CodeBeautify 三 九;, (compilation)=> {
Object.keys(compilation.assets).forEach((data)=> {
let content = compilation.assets[data].source() // 欲处置 的文原
content = content.replace(reg, function (word) { // 来除了正文后的文原
return /^\/{ 二,}/.test(word) || /^\/\*!/.test(word) || /^\/\*{ 三,}\//.test(word) 必修 "" : word;
});
compilation.assets[data] = {
source(){