Ich bin neu bei npm und verstehe nicht wirklich, was in Abhängigkeiten gegenüber devDependencies enthalten sein soll. Ich weiß, dass sie zum Testen von Bibliotheken in die Entwicklung gehen sollten, aber wie wäre es mit Dingen wie Babel und Webpack? Sollten sie auch in dev sein, weil sie nur verwendet werden, um es6 und JSX in Vanilla JS zu transkompilieren? Ich verstehe, dass bei der Bereitstellung auf Heroku bereits die Transkompilierung mit den erforderlichen Bibliotheken durchgeführt wird, sodass diese nicht in der Produktion gehostet werden müssen.
"dependencies": {
"babel-core": "^6.7.7",
"babel-eslint": "^6.0.4",
"babel-loader": "^6.2.4",
"babel-plugin-react-transform": "^2.0.2",
"babel-plugin-transform-object-rest-spread": "^6.6.5",
"babel-plugin-transform-react-display-name": "^6.5.0",
"babel-polyfill": "^6.7.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"bootstrap": "^3.3.7",
"css-loader": "^0.23.1",
"es6-promise": "^3.2.1",
"eslint": "^2.9.0",
"eslint-plugin-babel": "^3.2.0",
"eslint-plugin-react": "^5.0.1",
"express": "^4.13.4",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"lodash": "^4.15.0",
"react": "^15.0.2",
"react-addons-css-transition-group": "^15.0.2",
"react-dom": "^15.0.2",
"react-redux": "^4.4.5",
"react-transform-catch-errors": "^1.0.2",
"react-transform-hmr": "^1.0.4",
"redbox-react": "^1.2.3",
"redux": "^3.5.2",
"redux-form": "^6.1.0",
"rimraf": "^2.5.2",
"style-loader": "^0.13.1",
"webpack-dev-middleware": "^1.6.1",
"webpack-hot-middleware": "^2.10.0"
},
"devDependencies": {
"babel-register": "^6.9.0",
"chai": "^3.5.0",
"mocha": "^2.5.3",
"sinon": "^1.17.4",
"webpack": "^1.13.2"
}
javascript
npm
dependencies
packages
package-managers
stackjlei
quelle
quelle
Antworten:
Die Pakete
babel
undwebpack
werden in dendevDependencies
Abschnitt aufgenommen, da diese Pakete beim Transpilieren und Bündeln Ihres Codes in Vanille-Javascript in denbundle.js
Dateien & etc verwendet werden.In der Produktion führen Sie Ihren Code aus dem
bundle.js
Build aus / der generierte Code benötigt diese Abhängigkeiten nicht mehr.quelle
babel-polyfill
Abhängigkeiten einfügen sollen , aber ich verstehe nicht warum. Wird das Bundle es nicht enthalten, sobald ein Build ausgeführt wird? Ich sehe keinen Grund, warum es nicht in devDependencies sein kann. Würde mehr Einsicht lieben.Trotz allem, was im Grunde jeder sagt, werde ich ein Stück Vernunft anbieten ... es ist wirklich ganz einfach:
Wird Ihr Projekt
npm install
von einem anderen Projekt bearbeitet? aka Verfassen Sie ein npm-Modul? Wird es in anderen Projekten endenpackage.json
?Nein?
Dann steck alles rein
dependencies
.Ja?
dependencies
: Dinge, die nachgeschaltete Verbraucher und Projektentwickler Ihres Projekts installiert haben sollen:peerDependencies
: Dinge, die Ihre nachgeschalteten Benutzer benötigen, um sicherzustellen, dass sie installiert sindbundleDependencies
: Dinge, die Ihre nachgeschalteten Benutzer benötigen und nicht separat installieren müssen, da diese bei Ihnennpm publish
mit Ihrem Paket "gebündelt" werden.optionalDependencies
: Dinge, die schön zu haben sind, aber das Fehlen von wird keinen schwerwiegenden Fehler verursachendevDependencies
: Dinge, die nur während der Arbeit an Ihrem Projekt verwendet werden.Das kurze daran ist: Module werden nicht auf magische Weise anders installiert. Sie werden entweder installiert oder nicht.
quelle
dependencies
bedeutet das Einfügen von allem, dass Ihre Entwicklungstools mit Ihrer App in der Produktion bereitgestellt werden. Schlechte Idee.Dev-Abhängigkeit wird nur für den Entwicklungsserver verwendet. Dies sind devDepedency: Alle Pakete, die nicht im Quellcode verwendet oder importiert werden, sind devDependencies
"babel-cli": "^6.26.0", "babel-core": "^6.26.0", "babel-loader": "^7.1.4", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "clean-webpack-plugin": "^0.1.19", "copy-webpack-plugin": "^4.5.1", "css-loader": "^0.28.11", "file-loader": "^1.1.11", "html-webpack-plugin": "^3.2.0", "mini-css-extract-plugin": "^0.4.0", "node-sass": "^4.8.3", "optimize-css-assets-webpack-plugin": "^4.0.0", "prop-types": "^15.6.1", "sass-loader": "^7.0.1", "style-loader": "^0.21.0", "uglifyjs-webpack-plugin": "^1.2.5", "webpack": "^4.6.0", "webpack-cli": "^3.1.1", "webpack-dev-server": "^3.1.9"
quelle