六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

webpack4新增了哪一些東西?需要注意些什么?

[摘要]本篇文章給大家帶來的內容是關于webpack4新增了哪些東西?需要注意些什么?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。在開發人員還在體會webpack3.x的余韻時,webpack4.x已經悄然而來。而對使用者來說,最期待的問題無外乎如下:新版本與舊版本相比都有哪些改變?we...
本篇文章給大家帶來的內容是關于webpack4新增了哪些東西?需要注意些什么?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

在開發人員還在體會webpack3.x的余韻時,webpack4.x已經悄然而來。

而對使用者來說,最期待的問題無外乎如下:

  • 新版本與舊版本相比都有哪些改變?

  • webpack3.x到webapck4.x的遷移?

  • 使用webpack4.x我們應該注意什么?

webpack的新特性

webpack 作為構建工具的強大之處在于:

  • 可以在 webpack.config.js 中配置很多獨特的功能;

  • 它的配置靈活多變;

但正因為這樣,這也是它的糟點。因為太隨意,所以不好控制,造成了如下的問題:

  • 學習、使用、研究webpack的成本過高(進階曲線太陡);

  • 構建一個小應用也需要像構建大應用那樣配置 webpack.config.js(麻雀雖小五臟俱全);

而webpack4.x作為新一代版本 webpack ,它的出現極大的解決了現有的問題。

webpackk4.x可以不使用 webpack.config.js 配置文件

可以使用下面6小步完成項目的構建:

  1. 創建一個項目目錄(webpack-demo),然后進入改目錄

    mkdir webpack-demo && cd webpack-demo

  2. 初始化 package.json 文件

    npm init -y

  3. 加載 webpack 和 webpack-cli 依賴

    npm install webpack webpack-cli --save-dev

  4. 在項目中添加 ~/src/index.js 文件(index.js 是默認的入口文件,默認入口目錄為~/src,當然你也可以自定義入口文件,需要修改 package.json 中的 main 配置項為指定的文件)

index.js 文件代碼如下:

console.log('hello webpack.')

打開 package.json 在 scripts 配置項中添加如下代碼:

"scripts": {
    "build": "webpack"
}

注:這就是NPM的 scripts 命令

運行 npm run build 命令,之后在項目中你將看到一個 ~/dist/main.js 的文件。在命令窗口你因該注意到如下的警告提示:

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

忽略這條提示信息,我們發現webpack4.x的項目初始化配置和webpack3.x沒什么大的區別,但是webpack4.x少了必須要的 webpack.config.js 配置文件。

打包模式的改變

我們再回頭查看上面這個提示信息,它的意思就是說:‘如果沒有設置打包模式這個配置項,那么默認的打包模式為生產模式(production),而對于開發模式(development),需要配置 mode 配置項’,說到這里,我想各位看官應該明白了webpack4.x增加了很多默認配置項,針對不了解webpack的人員或小應用開發的場景,這樣做無異省時省力。

但實際應用中,我們往往還是區分開發模式和生產模式,但這在webpack4.x中也不是什么難事兒,只要修改 package.json 中的 scripts 如下:

"scripts": {
    "dev": "webpack --mode development", // 用于開發模式
    "build": "webpack --mode production" // 用于生產模式
}

‘對!webpack4.x就是這么簡單’。我們不需要像webpack3.x那樣分別定義開發模式和生產模式這樣兩份配置文件。

重載默認的配置項入口/出口

沒有了配置文件 webpack.config.js ,在減少了我們的配置工作量同時,也給初窺門徑的我們帶來了一些疑問。例如:如何自定義入口/出口?

在沒有 webpack.config.js 的情況下,我們可以在命令行中添加入口/出口配置項,代碼如下:

"scripts": {
    "dev": "webpack --mode development ./src/entry.js --output ./dist/bundle.js", // 用于開發模式
    "build": "webpack --mode production ./src/entry.js --output ./dist/bundle.min.js" // 用于生產模式
}

這只是不使用 webpack.config.js 的一種方案。

以上就是webpack4.x給我們帶來的整體變化。

但是原來 webpack.config.js 配置文件中的 module 和 plugins 配置項中的功能實現還是需要使用 webpack.config.js。雖然webpack團隊的計劃是 0 配置一些常用的loader,plugin,但實現的僅有 UglifyJSPlugin 內置插件,在生產模式無需引入它就可以實現 *.js 代碼的壓縮。其它的loader和plugin則只能通過 webpack.config.js 來引入。

webpack的遷移和注意事項

看到webpack4.x的這些變化,很多人不僅會問webpack3.x到webpack4.x的遷移是不是很麻煩,其實并不麻煩,webpack4.x向后兼容webpack.3x。

前面為了不引入 webpack.config.js ,我們使用了npm的 scripts ,其時像入口/出口的重載,我們也可以在 webpack.config.js 配置文件中完成,配置跟原來的相似,但是webpack4.x有如下問題需要注意:

  1. 升級到webpack4.x,你會發現在使用 extract-text-webpack-plugin 分離 *.css 出文件時經常出錯,這是 extract-text-webpack-plugin 本身的問題,官方推薦使用 mini-css-extract-plugin 來避免問題的出現,但使用 mini-css-extract-plugin 有一個限制就是webapck須是4.2.0版本以上(較低的版本不支持)。

  2. 使用 使用babel-loader 轉化ES6->ES5時將不需要 .babelrc 配置文件,你只需要在 package.json 的 scripts 中添加 --module-bind js=babel-loader 即可完成對 babel-loader 的配置。

其他的loader和plugin沒有什么大的變化。其實講到這里基本完了,下面是用webpack4.x構建的一個demo。

webpack4.x的demo

緊接上面的配置:

首先,添加 html-wepback-plugin 和 html-loader 依賴:

npm install html-webpack-plugin html-loader --save-dev

html-webpack-plugin生成html文件(html文件用來加載打包生成 bundle.js 文件),當然你也可以使用webpack支持的各種模板loader,這里使用 html-loader 支持的 *.html 類型模板來生成。

其次,添加 mini-css-extract-plugincss-loader 依賴:

npm install mini-css-extract-plugin css-loader --save-dev

loader和plugin配置與webpack3.x類同,也可參考下面提供代碼中的 webpack.config.js 文件。

然后,添加 babel-loader 、@babel/babel-core 和 @babel/babel-preset 依賴:

npm install @babel/core babel-loader @babel/preset-env --save-dev

loader和plugin配置與webpack3.x類同,也可參考下面提供源碼中的 webpack.config.js 文件。

修改 package.json 中 scripts 如下:

"scripts": {
    "dev": "webpack --mode development --module-bind js=babel-loader  ./src/entry.js --output ./dist/bundle.js",
    "build": "webpack --mode production ./src/entry.js --module-bind js=babel-loader --output ./dist/bundle.min.js"
},

最后,添加 webpack-dev-server 依賴,實現項目文件修改,瀏覽器及時刷新

npm install webpack-dev-server

在 package.json 中 scripts 的 dev 替換 webpack 為 webpack-dev-server 即可,代碼如下:

"scripts": {
    "dev": "webpack-dev-server --mode development --module-bind js=babel-loader ./src/entry.js --output ./dist/bundle.js",
    "build": "webpack --mode production ./src/entry.js --module-bind js=babel-loader --output ./dist/bundle.min.js"
},

這樣一個簡單的demo就完成了。

其他的loader和plugin配置和webpack3.x類同。

以上就是webpack4新增了哪些東西?需要注意些什么?的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。




主站蜘蛛池模板: 午夜免费片| 性香港xxxxx免费视频播放 | 人人爽人人香蕉 | 欧美一级精品 | 亚洲一区二区观看 | 人人看人人做 | 一级美女黄色片 | 亚洲第一黄网 | 亚洲视频一区二区 | 一级黄色在线视频 | 手机看片福利日韩欧美看片 | 日本视频播放 | 天堂中文资源在线地址 | 日本亚洲精品 | 青青草精品在线观看 | 青草视频在线观看视频 | 欧美午夜色大片在线观看免费 | 深夜成人福利视频 | 欧美综合视频 | 亚洲最大成人综合网 | 欧美一级黄色带 | 午夜1000集| 日日影视 | 亚洲v天堂 | 啪啪网站免费观看 | 色综合久久88色综合天天提莫 | 天天爱天天插 | 四虎4hu永久免费国产精品 | 中文日韩字幕一区在线观看 | 欧美亚洲综合视频 | 中文字幕高清免费不卡视频 | 伊人成人在线 | 在线 v亚洲 v欧美v 专区 | 日韩精品一区二区三区乱码 | 亚洲区在线 | 日韩精品欧美亚洲高清有无 | 四虎精品 | 欧美在线三级 | 青草青青视频 | 日韩一级特黄 | 手机三级|