往期回顧:javascript
es6
代碼編譯成es5
代碼代碼的轉化工做要交給babel
來處理java
npm install @babel/core @babel/preset-env babel-loader --save-dev
@babel/core
是babel中的核心模塊,@babel/preset-env
的做用是es6轉化es5插件的插件集合,而babel-loader
是webpack
和loader
的橋樑。webpack
const sum = (a, b) => { return a + b; };
增長babel
的配置文件 .babelrc
es6
{ "presets": [ ["@babel/preset-env"] ] }
配置loaderweb
module: { rules: [{ test: /\.js$/, use: "babel-loader" }] },
如今打包已經能夠成功的將es6
語法轉化成es5
語法!npm
npm i @babel/plugin-proposal-class-properties @babel/plugin-proposal-decorators --save-dev
"plugins": [ ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties",{"loose":true}] ]
legacy:true
表示繼續使用裝飾器,loose爲false時會採用Object.defineProperty
定義屬性json
根據.browserslistrc
文件,轉化使用到的瀏覽器apisegmentfault
"presets": [ ["@babel/preset-env",{ "useBuiltIns":"usage", // 按需加載 "corejs":2 // corejs 替代了之前的pollyfill }] ]
安裝corejs
npm install core-js@2 --save
使用transform-runtime
A plugin that enables the re-use of Babel's injected helper code to save on codesize.能夠幫咱們節省代碼。
npm install --save-dev @babel/plugin-transform-runtime @babel/runtime
在.babelrc
中配置插件
"plugins": [ "@babel/plugin-transform-runtime" ]
安裝eslint
npm install eslint npx eslint --init # 初始化配置文件
{ test:/\.js/, enforce:'pre', use:'eslint-loader' },
配置eslint-loader
能夠實時校驗js文件的正確性,pre
表示在全部loader
執行前執行
devtool:isDev?'cheap-module-eval-source-map':false
每一個庫中採用的
sourcemap
方式不一,能夠根據本身的須要自行配置
想實現使用require或是import的時候,能夠嘗試自動添加擴展名進行匹配
resolve: { extensions: [".js", ".jsx", ".json", ".css", ".ts", ".tsx", ".vue"] },
有時候在打包時但願將一些靜態資源文件進行拷貝,能夠使用copy-webpack-plugin
插件
安裝插件
npm i copy-webpack-plugin --save-dev
使用拷貝插件
const CopyWebpackPlugin = require('copy-webpack-plugin'); new CopyWebpackPlugin([ {from:path.resolve('./src/static'),to:path.resolve('./dist')}, ])