2016-03-29 11 views
0

installiert weiß, dass ich dieses Problem an anderer Stelle berichtet wurde, wenn webpack und html-webpack-Plugin mit npm -g installiert sind:Webpack mit html-webpack-Plugin, Fehlern, wenn global

module.js:341 
    throw err; 
    ^

Error: Cannot find module 'html-webpack-plugin' 
    at Function.Module._resolveFilename (module.js:339:15) 

Und die Antwort Leute gefunden haben ist install one or both locally to the project. Aber das wird nicht für mich funktionieren. Ich muss das in unserem Shared-Build-System arbeiten lassen, nicht nur in meiner Entwicklungsumgebung. Dies bedeutet, dass es global installiert wird, so dass alle Projekte über ihre von Jenkins ausgeführten ant/nant-Build-Skripte darauf zugreifen können.

Mein Projekt ist sehr einfach. Ein paar HTML-Seiten mit Inhalten, die von reactJS-Skripten generiert wurden, die im html mit Script-Tags enthalten sind. Das sollte einfach sein, und es fängt an, ein Schmerz zu sein. Denken Sie daran, Webpack zu dumpen und suchen Sie nach einem anderen einfachen Javascript-Paket-Manager.

Gibt es Umgebungsvariablen, die wir verwenden können, um zu sagen, dass Webpack im Knoten 'node_modules' des globalen Knotens nach 'erforderlichen Plugins/Paketen' sucht?

Vorschläge?

+0

Können Sie nicht lokal installieren und global? – aw04

+0

Ich kann das lokal in meiner Entwicklungsumgebung tun, aber das kann nicht auf dem Build-Server tun. Der Build-Server erstellt/zerstört Build-Umgebungen nach Bedarf, und ein spezielles Skript dort zu installieren, um html-webpack-plugin lokal zu installieren, bevor der Build gestartet wird, scheint wie eine Mistlösung, und ich möchte es vermeiden. – MonkeyWrench

Antwort

0

Sie müssen Webpack nicht global für Jenkins installieren. in Ihre package.json unter Skripten einen Befehl, der die lokale webpack läuft, wie folgt aus:

"scripts": { 
    "start": "webpack-dev-server --inline --hot", 
    "build": "webpack -p" 
    }, 

Jetzt Jenkins Ihr Build-Skript ausführen können, ohne eine globale webpack mit installiert:

npm run build 

In Auf diese Weise können Sie mehrere Projekte mit verschiedenen Webpack-Versionen verwalten, und jedes Projekt kann seine eigenen lokalen Abhängigkeiten haben.

Die Skripts Prop ist Teil des Projekts package.json. Die package.json enthält alle Abhängigkeiten und Dev-Abhängigkeiten (Build, Testing, etc ...) des Projekts. Wenn Sie package.json mit der NPM-Installation auf Ihrem Build-Rechner verwenden, können Sie alle Abhängigkeiten lokal (Teil des Projektverzeichnisses) installieren. Eine Probe eines package.json für einen Winkel Projekt mit webpack gebaut:

{ 
    "name": "whatever", 
    "version": "1.2.0", 
    "description": "whatever", 
    "scripts": { 
    "start": "webpack-dev-server --inline --hot", // runs the dev server 
    "build": "webpack -p" // builds the release 
    }, 
    "dependencies": { // the dependencies that are part of the actual release 
    "angular": "1.5.0", 
    "angular-animate": "1.5.0", 
    "angular-messages": "1.5.0", 
    "angular-ui-router": "0.2.15" 
    }, 
    "devDependencies": { // build dependencies 
    "babel-core": "6.5.2", 
    "babel-eslint": "6.0.0-beta.1", 
    "babel-loader": "6.2.3", 
    "babel-preset-es2015": "6.5.0", 
    "babel-preset-stage-0": "6.5.0", 
    "css-loader": "0.23.1", 
    "file-loader": "0.8.5", 
    "html-loader": "0.4.3", 
    "html-webpack-plugin": "2.14.0", 
    "less-loader": "2.2.2", 
    "style-loader": "0.13.0", 
    "url-loader": "0.5.7", 
    "webpack": "1.12.14", 
    "webpack-dev-server": "1.14.1" 
    }, 
    "license": "MIT" 
} 

Immer wenn der git Master aktualisiert wird, Jenkins zieht die letzte commit, reinigt das aktuelle Build-Verzeichnis, inklusive alle Abhängigkeiten und läuft im Projekt Ordner die folgenden Befehle: npm install zu installieren alle Abhängigkeiten lokal, als Teil des Projektordners npm run build die Freigabe

Jenkins ist nicht bekannt, webpack oder einem anderen Build-Tool oder Abhängigkeit zu bauen. Die einzigen Dinge, die global auf Jenkins installiert sind, sind nodejs und npm.

Und hier ist die einfache Bash-Skript, das die Befehle ausführt:

rm -rf node_modules || true // remove node_modules (all deps) 
npm install // install all deps 
npm run build // run the build script 
+0

Danke, aber wir brauchen keine verschiedenen Versionen von Webpack pro Projekt. Ich verstehe immer noch nicht, warum wir all das lokal in das zu erstellende Projekt einbauen müssen. Ich bin neu bei npm, und ich werde herausfinden müssen, was dein Skript oben tut. – MonkeyWrench

+0

Ich werde einige weitere Details hinzufügen. –

+0

Was installiert das html-webpack-Plugin lokal im Projekt? – MonkeyWrench

Verwandte Themen