2017-04-06 2 views
1

Bonjour les gars J'essaie d'apprendre Webpack J'ai suivi quelques tutoriels et j'ai rencontré quelques problèmes. J'ai installé webpack localement dans le dossier que je travaille avec npm install webpack --save-dev. J'ai fait deux scripts JS et je voulais les regrouper et j'ai essayé la commande suivante webpack script-1.js /.bundle.js dans WindowsPowerShell (j'utilise Windows 7). Maintenant, cela fait l'erreur suivanteGit Bash et webpack

webpack est pas reconnu comme une commande interne ou externe un programme ou un fichier batch

Alors j'installé webpack globalement, et quand je la même commande PowerShell (Je l'ai ouvert en tant qu'administrateur), il a fait le fichier bundle.js mais pas dans le répertoire dans lequel je travaillais, mais en C:
Maintenant, après cet échec, j'ai décidé d'essayer d'utiliser git bash. D'abord, je l'ai essayé cette commande webpack script-1.js /.bundle.js et obtenu l'erreur suivante

bash: webpack: command not found

Enfin après quelques essayé, j'ai pu le faire fonctionner en utilisant cette commande dans bash git node_modules/.bin/webpack ./script-1.js bundle.js
Y at-il un moyen de résoudre ce problème, donc je peux simplement taper webpack au lieu du chemin complet? Est-il également possible de corriger le chemin dans PowerShell?

C'est package.json moi

{ 
    "name": "webpack-playlist", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/iamshaunjp/webpack-playlist.git" 
    }, 
    "author": "me", 
    "license": "MIT", 
    "bugs": { 
    "url": "https://github.com/iamshaunjp/webpack-playlist/issues" 
    }, 
    "homepage": "https://github.com/iamshaunjp/webpack-playlist#readme", 
    "devDependencies": { 
    "webpack": "^2.3.3" 
    } 
} 

et ceci est package.json situé dans node_modules/webpack/package.json

{ 
    "_args": [ 
    [ 
     { 
     "raw": "webpack", 
     "scope": null, 
     "escapedName": "webpack", 
     "name": "webpack", 
     "rawSpec": "", 
     "spec": "latest", 
     "type": "tag" 
     }, 
     "C:\\Users\\Djole\\Desktop\\NetNinja\\webpack-playlist" 
    ] 
    ], 
    "_from": "[email protected]", 
    "_id": "[email protected]", 
    "_inCache": true, 
    "_location": "/webpack", 
    "_nodeVersion": "7.4.0", 
    "_npmOperationalInternal": { 
    "host": "packages-12-west.internal.npmjs.com", 
    "tmp": "tmp/webpack-2.3.3.tgz_1491205859622_0.6350918470416218" 
    }, 
    "_npmUser": { 
    "name": "sokra", 
    "email": "[email protected]" 
    }, 
    "_npmVersion": "4.0.5", 
    "_phantomChildren": {}, 
    "_requested": { 
    "raw": "webpack", 
    "scope": null, 
    "escapedName": "webpack", 
    "name": "webpack", 
    "rawSpec": "", 
    "spec": "latest", 
    "type": "tag" 
    }, 
    "_requiredBy": [ 
    "#DEV:/", 
    "#USER" 
    ], 
    "_resolved": "https://registry.npmjs.org/webpack/-/webpack-2.3.3.tgz", 
    "_shasum": "eecc083c18fb7bf958ea4f40b57a6640c5a0cc78", 
    "_shrinkwrap": null, 
    "_spec": "webpack", 
    "_where": "C:\\Users\\Djole\\Desktop\\NetNinja\\webpack-playlist", 
    "author": { 
    "name": "Tobias Koppers @sokra" 
    }, 
    "bin": { 
    "webpack": "./bin/webpack.js" 
    }, 
    "bugs": { 
    "url": "https://github.com/webpack/webpack/issues" 
    }, 
    "dependencies": { 
    "acorn": "^4.0.4", 
    "acorn-dynamic-import": "^2.0.0", 
    "ajv": "^4.7.0", 
    "ajv-keywords": "^1.1.1", 
    "async": "^2.1.2", 
    "enhanced-resolve": "^3.0.0", 
    "interpret": "^1.0.0", 
    "json-loader": "^0.5.4", 
    "loader-runner": "^2.3.0", 
    "loader-utils": "^0.2.16", 
    "memory-fs": "~0.4.1", 
    "mkdirp": "~0.5.0", 
    "node-libs-browser": "^2.0.0", 
    "source-map": "^0.5.3", 
    "supports-color": "^3.1.0", 
    "tapable": "~0.2.5", 
    "uglify-js": "^2.8.5", 
    "watchpack": "^1.3.1", 
    "webpack-sources": "^0.2.3", 
    "yargs": "^6.0.0" 
    }, 
    "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", 
    "devDependencies": { 
    "beautify-lint": "^1.0.3", 
    "benchmark": "^2.1.1", 
    "bundle-loader": "~0.5.0", 
    "codacy-coverage": "^2.0.1", 
    "codecov.io": "^0.1.2", 
    "coffee-loader": "~0.7.1", 
    "coffee-script": "^1.10.0", 
    "coveralls": "^2.11.2", 
    "css-loader": "~0.25.0", 
    "es6-promise-polyfill": "^1.1.1", 
    "eslint": "3.12.2", 
    "eslint-plugin-node": "^3.0.5", 
    "express": "~4.13.1", 
    "extract-text-webpack-plugin": "^2.0.0-beta", 
    "file-loader": "~0.9.0", 
    "i18n-webpack-plugin": "^0.3.0", 
    "istanbul": "^0.4.5", 
    "jade": "^1.11.0", 
    "jade-loader": "~0.8.0", 
    "js-beautify": "^1.5.10", 
    "less": "^2.5.1", 
    "less-loader": "^2.0.0", 
    "lodash": "^4.17.4", 
    "mocha": "^3.2.0", 
    "mocha-lcov-reporter": "^1.0.0", 
    "nsp": "^2.6.1", 
    "raw-loader": "~0.5.0", 
    "react": "^15.2.1", 
    "react-dom": "^15.2.1", 
    "script-loader": "~0.7.0", 
    "should": "^11.1.1", 
    "simple-git": "^1.65.0", 
    "sinon": "^1.17.7", 
    "style-loader": "~0.13.0", 
    "url-loader": "~0.5.0", 
    "val-loader": "~0.5.0", 
    "vm-browserify": "~0.0.0", 
    "webpack-dev-middleware": "^1.9.0", 
    "worker-loader": "~0.7.0" 
    }, 
    "directories": {}, 
    "dist": { 
    "shasum": "eecc083c18fb7bf958ea4f40b57a6640c5a0cc78", 
    "tarball": "https://registry.npmjs.org/webpack/-/webpack-2.3.3.tgz" 
    }, 
    "engines": { 
    "node": ">=4.3.0 <5.0.0 || >=5.10" 
    }, 
    "files": [ 
    "lib/", 
    "bin/", 
    "buildin/", 
    "hot/", 
    "web_modules/", 
    "schemas/" 
    ], 
    "gitHead": "ba24c1b163dc038ed738eb4a57dcb241bf63146d", 
    "homepage": "https://github.com/webpack/webpack", 
    "license": "MIT", 
    "main": "lib/webpack.js", 
    "maintainers": [ 
    { 
     "name": "jhnns", 
     "email": "[email protected]" 
    }, 
    { 
     "name": "sokra", 
     "email": "[email protected]" 
    }, 
    { 
     "name": "thelarkinn", 
     "email": "[email protected]" 
    } 
    ], 
    "name": "webpack", 
    "optionalDependencies": {}, 
    "readme": "ERROR: No README data found!", 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/webpack/webpack.git" 
    }, 
    "scripts": { 
    "appveyor:benchmark": "npm run benchmark", 
    "appveyor:test": "node --max_old_space_size=4096 node_modules\\mocha\\bin\\mocha --harmony test/*.test.js", 
    "beautify-lint": "beautify-lint 'lib/**/*.js' 'hot/**/*.js' 'bin/**/*.js' 'benchmark/*.js' 'test/*.js'", 
    "benchmark": "mocha test/*.benchmark.js --harmony -R spec", 
    "build:examples": "cd examples && node buildAll.js", 
    "cover": "node --harmony ./node_modules/istanbul/lib/cli.js cover -x '**/*.runtime.js' node_modules/mocha/bin/_mocha -- test/*.test.js", 
    "cover:min": "node --harmony ./node_modules/.bin/istanbul cover -x '**/*.runtime.js' --report lcovonly node_modules/mocha/bin/_mocha -- test/*.test.js", 
    "lint": "eslint lib bin hot buildin test/**/webpack.config.js test/binCases/**/test.js examples/**/webpack.config.js", 
    "lint-files": "npm run lint && npm run beautify-lint", 
    "nsp": "nsp check --output summary", 
    "pretest": "npm run lint-files", 
    "publish-patch": "npm run lint && npm run beautify-lint && mocha && npm version patch && git push && git push --tags && npm publish", 
    "test": "mocha test/*.test.js --harmony --check-leaks", 
    "travis:benchmark": "npm run benchmark", 
    "travis:lint": "npm run lint-files && npm run nsp", 
    "travis:test": "npm run cover:min" 
    }, 
    "version": "2.3.3", 
    "web": "lib/webpack.web.js" 
} 

EDIT: Je suis venu avec la solution suivante dans la fin: Ajouter à votre fichier package.json

"scripts" : { 
    "build" : "webpack ./entry.js bundle.js" 
    } 

, puis tapez npm run build cela lancera toujours la version locale car npm va d'abord regarder ./node_modules/.bin/

+0

Si c'est dans 'node_modules/.bin' puis qui sonne comme' webpack' a été installé localement et non à l'échelle mondiale. Peut-être réessayer avec 'npm install -g webpack'? – Trott

+0

@ Trott D'abord je l'ai installé localement mais parce que ça ne fonctionnait pas je l'ai installé globalement. Et puis cela a fonctionné dans PowerShell mais la sortie était en C: pas dans mon dossier de travail, donc c'est pourquoi j'ai essayé git bash et je dois travailler localement mais je dois utiliser le chemin de commande complet au lieu de simplement utiliser webpack script-1.js/.bundle.js Au moment où j'ai installé webpack à la fois dans le dossier avec lequel je travaille et globalement. – Zvezdas1989

Répondre

1

Ce type de chemin est ce qui est utilisé dans un git pour Windows bash.
Voir this issue

Nous utilisons Cmdr (http://cmder.net/) pour émuler la console sur les machines Windows.
Encore nous avons dû modifier des scripts et séparer la construction pour nettoyer et construire des tâches pour le faire fonctionner.

"scripts": { 
    "clean": "rm -rf dist", 
    "build": "node_modules/.bin/babel-node -- ./node_modules/webpack/bin/webpack.js --stats --config ./webpack/prod.config.js", 
    ... 
}, 

Vous pouvez voir une instruction similaire this project package.json:

"build-main": "cross-env NODE_ENV=production node -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.electron.js --progress --profile --colors", 
+0

Après avoir lu tous les liens que vous avez ajoutés plusieurs fois, je ne suis toujours pas sûr de ce que je suis supposé faire. Suis-je censé ajouter "build-main: ..." que vous avez écrit dans mon paquet json situé dans node_modules? J'ai aussi ajouté mon package.json à ma question, pour que vous puissiez le voir par vous-même. – Zvezdas1989

+0

@ Zvezdas1989 Oui, le but de ces liens était d'illutrer que, apparemment, vous deviez utiliser et spécifier de tels chemins ('./Node_modules/webpack/bin') et ne pas compter uniquement sur la commande (' webpack') – VonC

+0

Je vous remercie. Ça fonctionne maintenant. – Zvezdas1989