往期回顧: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
文件,轉化使用到的瀏覽器apiapi
"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')},
])
複製代碼