Webpack不包括导出的组件

时间:2016-06-16 15:37:17

标签: reactjs webpack babeljs

我有一个React应用程序,我正在一个单独的库中构建React组件,以便它可以在其他应用程序中共享。由于React组件是私有的,它们通过git + ssh安装在NPM中,而不是作为NPM包安装在NPM中。

基础:

我的组件库具有以下结构:

-- components
---- component1.jsx
---- component2.jsx
---- index.js
-- package.json

库的package.json文件基本上看起来像这样:

{
  "name": "my-react-components",
  "version": "1.0.0",
  "description": "Collection of React components",
  "main": "components/index.js",
  "dependencies": {
     ...
  }
}

components/index.js文件看起来像这样

export * from './component1';
export * from './component2';

每个组件都是这样写的:

export const SomeComponent = () => { ... };

我的应用程序引用了这样的组件

import { SomeComponent } from 'my-react-components';

我的NPM依赖关系看起来像这样

"my-react-components": "git+ssh://{gitaddress}"

Here's my applications webpack config

由于我正在与我的应用程序一起开发这个库,我一直在使用库文件夹中的符号链接到应用程序的node_modules文件夹以允许引用。这一直在起作用,并且继续正常工作。

问题

当我不使用符号链接而是使用NPM安装的版本时,babel或webpack或者拼图的某些部分突然停止构建我的组件库,而不是引用组件,我最终得到了{{我编译的包中的1}}标签。清理包并返回符号链接方法,一切正常。

Webpack没有显示任何错误,一切似乎都很好。我可以看到输出的差异,但是在符号链接方法中,我可以看到每个文件被写入包中:

export * from ...

当我不使用符号链接时,我只是看到类似

的内容
[1] ./node_modules/my-react-components/components/component1.jsx
[2] ./node_modules/my-react-components/components/component1.jsx

// Something like that I just made that up, 
// the point is I see the paths for components that are being referenced.

并且如前所述,该文件基本上是直接删除,没有babel,或检查导入或任何东西。

那么为什么在NPM安装的模块中会发生这种情况,而不是通过符号链接在完全相同的位置完全相同的文件呢?

只是要注意它们肯定是完全相同的文件,我在推送我的lib并且没有做任何更改之后立即完成了这个,删除了node_modules文件夹并重新安装,重新符号化等。这两种方法的区别在于每个方法都可以重现时间。

0 个答案:

没有答案