Вы ставите Babel и Webpack в devDependencies или Dependencies?

Я новичок в npm и не понимаю, что нужно делать в зависимости от devDependencies. Я знаю, что для тестирования библиотек они должны входить в dev, но как насчет таких вещей, как babel и webpack? Должны ли они быть в dev тоже, потому что они используются только для транскопирования es6 и JSX в vanilla JS? Мое понимание заключается в том, что, когда вы развертываете в heroku, он уже выполняет перекомпиляцию с необходимыми библиотеками, поэтому нет необходимости размещать их на производстве?

  "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"
  }

Ответ 1

Пакеты babel и webpack войдут в раздел devDependencies потому что эти пакеты используются при переносе и упаковке вашего кода в vanilla javascript в bundle.js & etc.

В производственном процессе вы будете запускать свой код из сборки/сгенерированного кода bundle.js больше не потребует этих зависимостей

Ответ 2

Несмотря на то, что в основном все говорят, я собираюсь предложить здравомыслие... это действительно довольно просто:

Будет ли ваш проект редактироваться npm install другим проектом? a.k.a вы создаете модуль npm? это закончится в других проектах package.json?

Нет?

Затем поместите все в dependencies.

Да?

  • dependencies: Вещи, которые вы хотите, чтобы нижестоящие потребители и разработчики проекта вашего проекта установили:
  • peerDependencies: вещи, которые ваши нижестоящие пользователи должны убедиться, что они установили
  • bundleDependencies: Вещи, которые понадобятся вашим нижестоящим пользователям, и не нужно будет устанавливать отдельно, потому что когда вы npm publish, они будут "в комплекте" с вашим пакетом.
  • optionalDependencies: вещи, которые приятно иметь, но отсутствие которых не приведет к фатальной ошибке
  • devDependencies: вещи, используемые только во время работы над вашим проектом.

Суть в том, что модули волшебным образом не устанавливаются по-другому. Они либо устанавливаются, либо нет.

Ответ 3

Dev-зависимость - это то, что используется только для сервера разработки, это devDepedency: все пакеты, которые не используются в исходном коде или импортированы, являются 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"