Webpack 如何告诉网页包不要通过摇动树来读取(排除)无法访问的文件?

Webpack 如何告诉网页包不要通过摇动树来读取(排除)无法访问的文件?,webpack,tree-shaking,Webpack,Tree Shaking,似乎Webpack的摇树功能有助于从包中删除未使用的代码。但是,Webpack确实读取了这些不可读的文件。我如何告诉Webpack不要阅读它们 以下是一个例子: index.js import { bar } from './bar'; bar(); bar/index.js export { bar } from './bar'; export { foo } from './foo'; bar/foo.js import fs from 'fs'; export function f

似乎Webpack的摇树功能有助于从包中删除未使用的代码。但是,Webpack确实读取了这些不可读的文件。我如何告诉Webpack不要阅读它们

以下是一个例子:

index.js

import { bar } from './bar';

bar();
bar/index.js

export { bar } from './bar';
export { foo } from './foo';
bar/foo.js

import fs from 'fs';

export function foo() {}
webpack.config.js

const path = require('path');

module.exports = {
  entry: './src/index.js',
  mode: 'production',
  module: {
    rules: [
      { sideEffects: false }
    ],
  },
  optimization: {
    usedExports: true
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  }
};
运行Webpack会导致以下错误: 在./src/bar/foo.js模块中找不到错误:错误:无法解析“/temp/webpack test/src/bar”中的“fs”


我希望Webpack不会读取foo.js文件,因为没有从入口点到该文件的路由。

这与预期一样有效

有一条路线:

  • ./src/index.js:
  • ->默认情况下,如果bar是目录,则路由到{folder}/index.js

  • bar/index.js:
  • --->export..from..语法还导入指定的文件:

  • bar/foo.js
  • 你越来越

    Error: Can't resolve 'fs' in "/temp/webpack-test/src/bar'
    
    因为
    fs
    在网页包默认
    target:web
    配置中不可用。 您可以通过以下方式绕过它:

    node: {
       fs: "empty"
    },
    

    但是有些事情可能不起作用。

    这就像预期的那样起作用

    有一条路线:

  • ./src/index.js:
  • ->默认情况下,如果bar是目录,则路由到{folder}/index.js

  • bar/index.js:
  • --->export..from..语法还导入指定的文件:

  • bar/foo.js
  • 你越来越

    Error: Can't resolve 'fs' in "/temp/webpack-test/src/bar'
    
    因为
    fs
    在网页包默认
    target:web
    配置中不可用。 您可以通过以下方式绕过它:

    node: {
       fs: "empty"
    },
    

    但是有些事情可能不起作用。

    谢谢Raz。我不担心这个错误。这只是为了证明Webpack解析了
    src/bar/foo.js
    文件的事实。因为
    foo
    没有导出到主
    src/index.js
    文件中,我希望这个文件被忽略。树抖动是一种优化,所以它可以工作er模块被解析为一个构建的模块。很有趣听到社区关于webpack是否应该/不应该解析这些文件的想法。也许在未来的版本中它不会感谢Raz。我不担心这个错误。这只是为了证明webpack解析了
    src/bar/foo.js
    文件的事实。因为
    foo
    没有在中导出对于主
    src/index.js
    文件,我希望该文件被忽略。树抖动是一种优化,因此它在模块解析和构建后工作。有趣的是听到社区关于webpack是否应该/不应该解析这些文件的想法。也许在未来的版本中它不会
    node: {
       fs: "empty"
    },