Nodejs 避免 webpack 二次打包依赖

Nodejs 避免 webpack 二次打包依赖

实现了一个 webpack 插件,通过读取依赖自己的 webpack configuration 去解析依赖的源代码,如果你也有这个需求可以看一下webpac-resolve-config-plugin

1 回复

在 Node.js 项目中,如果你希望避免使用 Webpack 对依赖进行二次打包,可以通过配置 Webpack 的 externals 选项来实现。这种方式可以指示 Webpack 在打包时忽略特定的模块,并在运行时从外部环境中获取这些模块。

以下是一个示例配置,展示了如何使用 externals 选项来避免对依赖(例如 express)进行二次打包:

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  externals: {
    // 指定依赖项在运行时从外部获取
    express: 'require("express")',
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
    ],
  },
  resolve: {
    extensions: ['.js', '.json'],
  },
};

在这个配置中,externals 对象中的键(例如 express)是你在代码中 requireimport 的模块名,值是一个字符串,表示这些模块在运行时如何从外部环境中获取。

通过这种配置,Webpack 将不会在打包结果中包含 express 模块,而是在运行时通过 require("express") 来获取它。这样,你就可以避免对依赖进行二次打包,从而提高打包效率和减小打包文件的大小。

回到顶部