package.json
{
"name": "universal-redux",
"description": "Universal React and Redux web app boilerplate bundled with webpack.",
"version": "0.2.0",
"author": {
"name": "Victor Popkov",
"email": "victor@popkov.me"
},
"dependencies": {
"@babel/plugin-proposal-decorators": "^7.23.9",
"@babel/plugin-proposal-export-default-from": "^7.23.3",
"@babel/plugin-proposal-function-bind": "^7.23.3",
"@babel/plugin-transform-react-display-name": "^7.23.3",
"@babel/plugin-transform-runtime": "^7.23.9",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.23.9",
"@babel/preset-react": "^7.23.3",
"@babel/register": "^7.23.7",
"@babel/runtime": "^7.23.9",
"axios": "^1.6.7",
"babel-plugin-inline-react-svg": "^2.0.2",
"babel-plugin-prismjs": "^2.1.0",
"babel-plugin-webpack-alias": "^2.1.2",
"body-parser": "^1.20.2",
"bootstrap": "5.3.3",
"change-case": "^5.4.4",
"classnames": "^2.5.1",
"compression": "^1.7.4",
"connected-react-router": "^6.9.3",
"copy-webpack-plugin": "^12.0.2",
"css-minimizer-webpack-plugin": "^7.0.0",
"cssnano": "^7.0.5",
"dotenv-webpack": "^8.1.0",
"env-cmd": "^10.1.0",
"express": "^4.19.2",
"express-session": "^1.18.0",
"history": "^5.3.0",
"http-proxy": "^1.18.1",
"humps": "^2.0.1",
"immutable": "^4.3.7",
"ip": "^2.0.1",
"lodash": "^4.17.21",
"mini-css-extract-plugin": "^2.9.0",
"morgan": "^1.10.0",
"normalizr": "^3.6.2",
"npm-run-all": "^4.1.5",
"path": "^0.12.7",
"pretty-error": "^4.0.0",
"prismjs": "^1.29.0",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-cookie": "^4.1.1",
"react-dom": "^18.3.1",
"react-helmet": "^6.1.0",
"react-hot-loader": "^4.13.1",
"react-markdown": "^6.0.3",
"react-redux": "^9.1.2",
"react-redux-loading-bar": "^5.0.8",
"react-router": "^5.2.1",
"react-router-config": "^5.1.1",
"react-router-dom": "^5.3.0",
"reactstrap": "^9.2.2",
"redux": "^5.0.1",
"redux-actions": "^2.6.5",
"redux-connect": "^10.0.0",
"redux-immutablejs": "^0.0.8",
"redux-notify": "^0.2.0",
"redux-thunk": "^2.4.2",
"remark-gfm": "^1.0.0",
"serialize-javascript": "^6.0.2",
"serve-favicon": "^2.5.0",
"terser-webpack-plugin": "5.3.10",
"universal-cookie": "^7.2.0",
"universal-cookie-express": "^7.2.0",
"universal-webpack": "^0.8.5",
"url": "^0.11.4",
"webpack-merge": "^6.0.1"
},
"devDependencies": {
"@actions/core": "^1.10.1",
"@babel/core": "^7.23.9",
"@babel/eslint-parser": "^7.23.10",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-syntax-export-default-from": "^7.23.3",
"autoprefixer": "^10.4.20",
"babel-loader": "^9.1.3",
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.10.0",
"eslint": "^8.56.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.9.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.35.0",
"eslint-webpack-plugin": "^4.2.0",
"file-loader": "^6.2.0",
"json-loader": "^0.5.7",
"less": "^4.2.0",
"less-loader": "^12.2.0",
"nodemon": "^3.1.4",
"postcss": "^8.4.41",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-nested": "^6.2.0",
"postcss-scss": "^4.0.9",
"prettier": "^3.3.3",
"react-a11y": "^1.1.0",
"redbox-react": "^1.6.0",
"redux-devtools": "^3.7.0",
"redux-devtools-dock-monitor": "^1.2.0",
"redux-devtools-log-monitor": "^2.1.0",
"redux-logger": "^3.0.6",
"resolve-url-loader": "^5.0.0",
"sass": "^1.77.8",
"sass-loader": "^16.0.0",
"sass-resources-loader": "^2.2.5",
"style-loader": "^4.0.0",
"stylelint": "^16.8.1",
"stylelint-config-twbs-bootstrap": "^14.2.0",
"stylelint-webpack-plugin": "^5.0.1",
"svgo": "^3.3.2",
"svgo-loader": "^4.0.0",
"url-loader": "^4.1.1",
"webpack": "^5.93.0",
"webpack-cli": "^5.1.4",
"webpack-dev-middleware": "^7.3.0",
"webpack-hot-middleware": "^2.26.1",
"yarn-audit-fix": "^10.0.8",
"yarn-deduplicate": "^6.0.2"
},
"engines": {
"node": ">=18.12.0"
},
"homepage": "https://github.victorpopkov.com/universal-redux/",
"license": "MIT",
"main": "bin/server.js",
"repository": {
"type": "git",
"url": "github:victorpopkov/universal-redux"
},
"scripts": {
"audit:fix": "yarn-audit-fix",
"build": "env-cmd --silent npm-run-all build:*",
"build:client": "webpack --config='./webpack/prod.client.config.js'",
"build:server": "webpack --config='./webpack/prod.server.config.js'",
"ci:eslint": "eslint --ext='js,jsx' --format='./.github/eslint-output.js' .",
"ci:prettier": "node ./.github/prettier-output.js",
"deduplicate": "yarn-deduplicate && yarn install",
"dev": "env-cmd --silent npm-run-all universal-webpack:prepare development",
"development": "npm-run-all --parallel watch:* start:dev:*",
"lint": "npm-run-all --continue-on-error lint:*",
"lint:eslint": "eslint --ext='js,jsx' .",
"lint:prettier": "prettier --check .",
"lint:stylelint": "stylelint './src/**/*.css' './src/**/*.scss'",
"start": "env-cmd --silent npm-run-all --parallel start:prod:*",
"start:dev:api": "node ./bin/api.js",
"start:dev:server": "nodemon ./bin/server.js --watch='./src/' --watch='./build/' --no-update-notifier",
"start:prod:api": "node ./bin/api.js",
"start:prod:server": "node ./bin/server.js",
"test": "npm-run-all --continue-on-error lint:*",
"universal-webpack:prepare": "universal-webpack --settings='./webpack/universal-webpack-settings.json' prepare",
"watch:client": "node ./webpack/webpack-dev-server.js",
"watch:server": "webpack --config='./webpack/dev.server.config.js' --watch"
}
}