使用 import() 语法实现动态导入
project
webpack-demo |- package.json |- webpack.common.js |- webpack.dev.js |- webpack.prod.js |- /dist |- /src |- index.js |- /node_modules
index.js
async function getComponent () { const { default: _ } = await import(/*webpackChunkName: "lodash"*/'lodash') const element = document.createElement('div') element.innerHTML = _.join(['Hello', 'webpack'], ' ') return element } getComponent().then(component => { document.body.appendChild(component) })
webpack.common.js
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
module.exports = {
entry: {
index: './src/index.js',
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new HtmlWebpackPlugin(),
new CleanWebpackPlugin()
]
}
webpack.dev.js
const {merge} = require('webpack-merge')
const common = require('./webpack.common')
module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
devServer: {
contentBase: './dist',
port: 3000,
open: true
}
})
webpack.prod.js
const {merge} = require('webpack-merge')
const UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin')
const common = require('./webpack.common')
const webpack = require('webpack')
module.exports = merge(common, {
mode: 'production',
devtool: 'source-map',
plugins: [
new UglifyjsWebpackPlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
]
})