Web前端之路让前端飞

webpack DLL 动态链接库

2020-11-27  本文已影响0人  ComfyUI

项目地址:https://github.com/Ewall1106/webpack-demo

是什么?

许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即 DLL 文件,放置于系统中。当我们执行某一个程序时,相应的 DLL 文件就会被调用。一个应用程序可使用多个 DLL 文件,一个 DLL 文件也可能被不同的应用程序使用,这样的 DLL 文件被称为共享 DLL 文件。— 百度百科

安装

# 初始化
$ npm init -y
# 安装一些基础的包
$ sudo npm i webpack webpack-cli react react-dom html-webpack-plugin webpack-dev-server clean-webpack-plugin babel-loader @babel/core @babel/preset-env @babel/preset-react --save-dev
import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(<div>hello world</div>, document.getElementById('app'));

打包 React

const path = require('path');
const webpack = require('webpack');

module.exports = {
  mode: 'development',

  entry: {
    react: ['react', 'react-dom'],
  },

  output: {
    filename: '_dll_[name].js',
    path: path.resolve(__dirname, './dist'),
    library: '_dll_[name]',
    libraryTarget: 'umd',
  },

  plugins: [
    new webpack.DllPlugin({
      name: '_dll_[name]',
      path: path.resolve(__dirname, 'dist', 'manifest.json'),
    }),
  ],
};
$ npx webpack --config webpack.react.js
/dist
+ _dll_react.js
+ manifest.json

设置依赖

module.exports = {
  // ...
  // ...
  plugins: [
    // 当使用react的使用,先去这个表里面找
    new webpack.DllReferencePlugin({
      manifest: path.resolve(__dirname, 'dist', 'manifest.json'),
    }),
  ],
};

小结

./src/index.js 172 bytes [built][code generated]
webpack 5.4.0 compiled successfully in 56 ms

// 使用DLL配置react库后:

./src/index.js 172 bytes [built][code generated]
webpack 5.4.0 compiled successfully in 41 ms
上一篇下一篇

猜你喜欢

热点阅读