javascript - Webpack 无冗余导出所有组件

标签 javascript reactjs webpack

我有以下目录结构:

- modules/ |
           |--- a
                |---- p.jsx
                |---- a_directory/not_to_export.jsx
                |-----q.jsx
           |   
           |--- b
                |---- r.jsx
                |-----s.jsx
           |
           |--- c
                |---- t.jsx

要问的一个简单问题是——我如何导出每个模块及其在 webpack 中的路径以便在 webbrowser 中使用。

示例:require('a/p.jsx') 应该返回对 p 模块的引用。

更详细的目标:

  • 每个顶级 jsx,都应该被视为一个模块 ex:a/p.jsxa/q.jsxb/r。 jsx,b/s.jsx,c/t.jsx.
  • 所有这些模块实际上都应该使用它们的路径来引用,例如:在 b/r.jsx 中,我想访问 a/p.jsx
  • 所有编译成单个 jsx 的东西,基本上要求语句是同步的。
  • 如果可能缓存构建
  • require 应该被导出,就像在构建之外,我应该能够加载一个组件,例如:require("a/p.jsx") 可以在构建之外使用,而不是仅导出入口点。

此行为与 brunch 产生的行为非常相似,唯一的问题是 brunch 不支持条件要求/导入语句。

最佳答案

  • Each top-level jsx, should be treated as a module ex: a/p.jsx, a/q.jsx, b/r.jsx, b/s.jsx, c/t.jsx.

  • All these modules should be actually be referenced using their paths like: in b/r.jsx, I want to access a/p.jsx.

要配置 wepack 如何解析绝对路径,请参阅 resolve option .您必须将模块文件夹添加到解析器。所以在你的 webpack 配置中添加:

module.exports = {
  //...
  resolve: {
    modules: ['node_modules', 'modules']
  }
};

我假设您的 modules 文件夹与您的 node_modules 文件夹处于同一级别。

  • Everything compiled to a single jsx, basically require statement to be synchronous.

  • require exports.

要构建与节点 js 一起使用,请使用 target选项:

module.exports = {
  target: 'node'
};

关于javascript - Webpack 无冗余导出所有组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51475019/

相关文章:

javascript - Babel 和 Webpack 正在抛出 "Can' t resolve 'regenerator-runtime/runtime' "

javascript - ionic 不从变量返回数据

javascript - 如何在 react 中将组件作为 Prop 传递给 Prop ?

javascript - 如何防止渲染方法在初始设置为未定义的状态上抛出错误

javascript - 如何使用重新选择将 props 传递给包装在容器中的子组件?

reactjs - Webpack + React + TypeScript : Module not found . .. 在 ... node_modules/react/

javascript - Node.js 从带有参数的 Node CMD 调用函数

Javascript参数改变值?

reactjs - "setInterval"内的函数未从钩子(Hook)接收更新的变量

javascript - 使用 webpack [request] 魔术注释将动态模块捆绑在一起