2016-04-27 61 views
0

例如,我有一些配置模块:如何要求或模块仅导入必要的出口具有的WebPack

exports.common = { 
 
\t cookieDomain: '.mydomain.dev', 
 
\t protocol: 'http', 
 
\t apiPort: 3030 
 
} 
 

 
exports.server { 
 
\t port: 8080 
 
}

在另一个模块,我想只需要config.common对象,但避免来自config.server的代码打入客户端软件包。这是可能的与webpack?

+0

这将成为可能与webpack 2(目前在测试版),但只有ES2015语法,如果我没有记错。 – nils

+0

不是。如果你不需要它们在一起,不要把它们放在同一个模块中。 – Bergi

回答

2

这被称为“树摇”和will be a part of webpack 2。 无法虽然使用CommonJS的语法,你将需要使用ES2015模块语法:

出口:

export const common = { 
    cookieDomain: '.mydomain.dev', 
    protocol: 'http', 
    apiPort: 3030 
}; 

export const server { 
    port: 8080 
}; 

导入:

import common from 'config'; 

common; // do something with common 
// server is not included in the bundle 

您可以使用当前安装测试版版本号:

npm install [email protected] 

或者,你也可以h看看rollup.js,它支持这一点从开始(并产生更小的捆绑)。它也只支持ES2015语法。

+0

我安装了webpack 2,但它不会摇动树。我怀疑问题出在已安装的预设或插件上。以下是我的.babelrc “预设”:[“react”,“es2015”,“stage-0”,“es2015-loose”,“es2015-native-modules”], “插件”:[ “变换运行时”, “变换装饰遗”, “变换级的属性” ], “sourceMaps”:真, “retainLines”:真 }' –

+0

删除'es2015'和'ES2015 -loose',否则你的'import's会被转换成'require();'s。 – nils

+0

我无法移除es2015,因为nodejs上的serverside引发错误SyntaxError:意外的令牌导入 –