0

Zum Beispiel habe ich Modul mit einigen Konfigurationen:Wie erfordern oder nur Import notwendig Exporte aus Modul mit webpack

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

 
exports.server { 
 
\t port: 8080 
 
}

In einem anderen Modul i nur config.common Objekt erforderlich sein soll, sondern die Vermeidung dass der Code von config.server in das Client-Bundle einbricht. Ist das mit Webpack möglich?

+0

Dies wird mit Webpack 2 möglich (die derzeit in der Betaversion ist), aber nur für die ES2015-Syntax, wenn ich mich nicht irre. – nils

+0

Nicht wirklich. Legen Sie beide Dinge nicht in dasselbe Modul, wenn Sie sie nicht zusammen benötigen. – Bergi

Antwort

2

Dies wird "Tree Shaking" und will be a part of webpack 2 genannt. Sie können nicht die Commonjs Syntax verwenden, obwohl, müssen Sie die ES2015-Modul Syntax:

Export:

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

export const server { 
    port: 8080 
}; 

Import:

import common from 'config'; 

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

Sie können die Beta-Version unter Verwendung der aktuellen installieren Versionsnummer:

npm install [email protected] 

Alternativ könnten Sie auch h ave einen Blick auf rollup.js, die dies von Anfang an unterstützt (und produziert auch etwas kleinere Pakete). Es unterstützt jedoch nur die ES2015-Syntax.

+0

Ich habe Webpack 2 installiert, aber es schüttelt den Baum nicht. Ich vermute, dass das Problem in installierten Presets oder Plugins liegt. Unten ist meine .babelrc '{ " Voreinstellungen ": [" reagieren "," es2015 "," stage-0 "," es2015-los "," es2015-native-modules "], " plugins ": [ "Transformation-runtime", "transformations Dekorateure-Vermächtnis", "transformations Klasse-Eigenschaften" ], "sourceMaps": true, "retainLines": true } '' –

+0

entfernen es2015' und 'es2015 -loose', sonst wird Ihr 'Import' in' require(); 's transpiliert. – nils

+0

Ich kann es2015 nicht entfernen, da serverside auf nodejs Fehler auslöst SyntaxError: Unerwarteter Token-Import –