Je suis nouveau sur Node Js and Webpack. J'ai essayé de démarrer un projet avec des chargeurs de modules.
Tout d'abord, j'ai installé nodeJs et NPM et créé un nouveau répertoire appelé tutorial
. J'ai utilisé la commande Prompt to cd dans ce répertoire, puis j'ai exécuté la commande suivante npm init
, puis installé Webpack via npm
à l'aide de la commande ci-dessous:
npm install -S webpack
La 1ère commande a installé webpack localement dans le projet sous le répertoire 'node-modules' et je peux exécuter mon projet en procédant comme suit:
nodejs node-modules/webpack/bin/webpack.js
Le problème avec ceci est que je dois placer mon fichier webpack.config.js
à l'intérieur de ce répertoire que je veux placer à la racine de mon projet.
Une solution à ce problème consistait à installer Webpack de manière globale sur ma machine, ce que j'ai fait à l'aide de la commande ci-dessous:
npm install -g webpack
Ce Webpack installé et maintenant j'ai une commande Webpack. Cependant, cette commande ne semble pas fonctionner ou faire quoi que ce soit. Lorsque j'essaie d'exécuter ceci à partir de la racine de mon projet, il ne fait rien du tout (voir la capture d'écran)
S'il vous plaît dites-moi ce que je fais mal !!
webpack
n'est pas seulement dans votre répertoire node-modules/webpack/bin/
, il est également lié dans node_modules/.bin
.
Vous avez la commande npm bin
pour obtenir le dossier où npm installera les exécutables.
Vous pouvez utiliser la propriété scripts
de votre package.json
pour utiliser Webpack à partir de ce répertoire qui sera exporté.
"scripts": {
"scriptName": "webpack --config etc..."
}
Par exemple:
"scripts": {
"build": "webpack --config webpack.config.js"
}
Vous pouvez ensuite l'exécuter avec:
npm run build
Ou même avec des arguments:
npm run build -- <args>
Cela vous permet d’avoir vous webpack.config.js
dans le dossier racine de votre projet sans que Webpack soit installé globalement ou que votre configuration de paquet Web ne se trouve pas dans le dossier node_modules
.
npm i webpack -g
installe Webpack globalement sur votre système, ce qui le rend disponible dans la fenêtre du terminal.
Je devais réinstaller Webpack pour le faire fonctionner avec ma version locale de Webpack, par exemple:
$ npm uninstall webpack
$ npm i -D webpack
Vous pouvez exécuter npx webpack
. La commande npx, livrée avec Node 8.2/npm 5.2.0 ou supérieur, exécute le fichier binaire webpack (./node_modules/.bin/webpack) du package webpack. Source de l'information: https://webpack.js.org/guides/getting-started/
L'installation de Webpack avec l'option -g installe Webpack dans un dossier de
C:\Users\<.nomdufichier.>\AppData\Roaming\npm\node_modules
idem avec webpack-cli et webpack-dev-server
En dehors des nœuds_modules globaux, un lien est créé pour que le pack Web soit exécuté à partir de la ligne de commande.
C:\Users\<.nomdufichier.>\AppData\Roaming\npm
pour faire ce travail localement, j'ai fait ce qui suit
Le problème avec cette approche est que vous devez maintenir des liens pour chaque projet que vous avez. Il n'y a pas d'autre moyen puisque vous utilisez l'éditeur de ligne de commande pour exécuter la commande webpack lors d'une installation avec l'option -g.
Ainsi, si vous aviez proj1, proj2 et proj3 avec leurs node_modules et leur webpack locaux installés (sans utiliser -g lors de l'installation), vous devrez alors créer des noms de liens non génériques au lieu de webpack.
exemple ici serait de créer webpack_proj1.cmd, webpack_proj2.cmd et webpack_proj3.cmd et dans chaque cmd suivre les points 2 et 3 ci-dessus
PS: n'oubliez pas de mettre à jour votre package.json avec ces modifications, sinon vous obtiendrez des erreurs car il ne trouvera pas la commande webpack
Le moyen le plus rapide, pour que cela fonctionne, consiste à utiliser le pack Web à partir d'un autre emplacement. Cela vous évitera de l'installer globalement ou en cas d'échec de npm run webpack
.
Lorsque vous installez webpack avec npm, il se place dans le dossier "node_modules\.bin
" de votre projet.
dans l'invite de commande (en tant qu'administrateur)
"C:\Users\..\ProjectName\node_modules\.bin\webpack" --config webpack.config.vendor.js