2015-01-26 20 views
9

Próbuję wprowadzić zmienną do każdego modułu w moim pakiecie pakietu Webpack w celu uzyskania informacji o debugowaniu błędów JS na plik. Mam włączoneWstrzykiwanie zmiennych do pakietu sieciowego

node: { 
    __filename: true 
} 

Current file path in webpack

w moim webpack.config, ale chciałbym, aby wprowadzić coś

var filename = 'My filename is: ' + __filename; 

do każdego modułu przed kompilacją. Widziałem Banner Plugin z opcją raw, ale wygląda na to, że tylko wstrzyknęłoby to baner poza zamknięcie pakietu, zamiast pożądanego wyniku wstrzyknięcia skryptu do każdego modułu.

Odpowiedz

1

Napisz ładowarka:

my_project/my_loaders/filename-loader.js:

module.exports = function(source) { 
    var injection = 'var __filename = "' + this.resourcePath + '";\n'; 
    return injection + source; 
}; 

dodać go do rurociągu i upewnij się, aby dodać także konfigurację:

resolveLoader: { 
    modulesDirectories: ["my_loaders", "node_modules"] 
} 

Zobacz dokumentację na stronie how to write a loader.

+0

Stworzyłem ten program ładujący https://github.com/optimizely/marketing-website/blob/dfoxpowell/jordan-webpack-try/loaders/inject-filename-loader.js który działa świetnie, ale nie działa dla niektórych powód w naszej konstrukcji prod CI. Zadałem tutaj pytanie http://stackoverflow.com/questions/29850802/webpack-loader-not-working-on-jenkins-ci-build i to doprowadza mnie do szału, jeśli masz jakieś pomysły? – dtothefp

15

używam zmiennych rozwiązać kilka zmiennych w moim pliku webpack.config.js:

plugins: [ 
    new webpack.DefinePlugin({ 
     ENVIRONMENT: JSON.stringify(process.env.NODE_ENV || 'development'), 
     VERSION: JSON.stringify(require('./package.json').version) 
    }) 
] 

To nie może być na tyle dynamiczny, ale jeśli tak, to może być w stanie ominąć to rozwiązanie ładowarka.

+1

Aby dynamicznie przekazywać zmienne, nadal możesz korzystać z tej wtyczki. Po prostu powiedz kiedy budujesz: webpack --define myurl = "http: // localhost: 3000" – Richard

+1

dlaczego używasz JSON.stringify na process.env.NODE_ENV? –

+0

Jeśli, powiedzmy, WERSJA jest używana jako zmienna w kodzie, a JSON.stringify nie jest używana (lub inny mechanizm, który dodał cytaty), to kończy się na czymś podobnym (błąd kompilatora): console.log (VERSION) -> console.log (1.0.0), kiedy chciałeś console.log ("1.0.0") –

Powiązane problemy