2017-08-09 35 views
0

我有一个React应用程序,它是用ES6/JSX编写的并由Webpack传输的。我想将这个应用程序的一部分提取到一个单独的存储库(github)中,并将其作为dependency包含在package.json中。 我不明白的是,如果我需要创建/dist目录与ES5编译版本的依赖关系,然后再推送到github。React应用程序 - ES6外部依赖关系

我认为如果我使用Webpack来构建主应用程序,我的依赖关系也可以在ES6中编写,而无需额外转译ES5。当我从这个依赖项中导入某些东西时,它会被包含并在主构建中进行转换。我对吗?

+0

除非你明确告诉Webpack/Babel去传译它。 – Scimonster

+0

@Scimonster :(这意味着依赖项应该有一个入口点,并提供其自身的转发版本以便被其他应用程序使用? –

+1

是的,它最终变得更简单,而不是特殊情况下的依赖 – Scimonster

回答

1

你通常不会。我建议你作为一个独立的库(已经编译好)提取你的功能,并导出每个React组件(或者你正在导出的任何功能),然后从你需要的所有项目中导入它。

使用npm您可以导入基于git的项目(包括github),而无需将它们发布到npm数据库中。

为此,您可以拥有一个index.js文件,其中包含从不同文件导入的所有内容并导出。

+0

是的,这是我想要实现的东西你知道是否有可能建立npm依赖没有明确的入口点吗我的意思是这个lib我试图建立的只是一组可重用的函数,我想保持它们分开 –

+1

我不知道你是什么意思,你可以在你的package.json中输入一个输入你想要的每一个功能的入口点,检查异步库的结尾,例如:https://github.com/caolan/async /blob/master/dist/async.js – lilezek

2

通常Webpack配置会忽略您的package.json中的任何内容。我建议将其他图书馆建设为完全独立的图书馆。如果由于某种原因,这不是一个选项,你可以改变你的Webpack配置,以允许其他软件包被转发。事情是这样的:

loaders: [ 
    { 
    test: /\.jsx?$/, 
    exclude: /node_modules\/(?!moduleName)/ 
    loader: 'babel', 
    query: { 
     presets: ['react', 'es2015'] 
    } 
    } 
], 

这从transpiling所有节点模块除了moduleName停止巴贝尔。显然,将其改为正确的模块名称。

+1

谢谢你的好意思,所以它意味着每个想要使用这个依赖项的应用程序都负责调整它的webpack配置,以便进行转译工作。使这个lib的转译版本受到影响 –