diff --git a/Dockerfile b/Dockerfile index a7f323b8..edf94cff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,12 @@ FROM node:alpine as builder -RUN apk update && apk add yarn python3 build-base gcc wget git --no-cache +RUN apk update && apk add curl yarn python3 build-base gcc wget git --no-cache +RUN curl -sf https://gobinaries.com/tj/node-prune | sh WORKDIR /usr/src/app # Cache deps COPY package.json yarn.lock ./ -RUN yarn install --pure-lockfile +RUN yarn install --production --ignore-scripts --prefer-offline --pure-lockfile # Build COPY generate_translations.js \ @@ -21,9 +22,18 @@ COPY .git .git # Set UI version RUN echo "export const VERSION = '$(git describe --tag)';" > "src/shared/version.ts" -RUN yarn +RUN yarn install --production --ignore-scripts --prefer-offline RUN yarn build:prod +# Prune the image +RUN node-prune /usr/src/app/node_modules + +RUN rm -rf ./node_modules/import-sort-parser-typescript +RUN rm -rf ./node_modules/typescript +RUN rm -rf ./node_modules/npm + +RUN du -sh ./node_modules/* | sort -nr | grep '\dM.*' + FROM node:alpine as runner COPY --from=builder /usr/src/app/dist /app/dist COPY --from=builder /usr/src/app/node_modules /app/node_modules diff --git a/package.json b/package.json index e7c0b509..5e9e7b3e 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,24 @@ }, "repository": "https://github.com/LemmyNet/lemmy-ui", "dependencies": { + "@babel/plugin-proposal-decorators": "^7.18.9", + "@babel/plugin-transform-runtime": "^7.18.9", + "@babel/plugin-transform-typescript": "^7.18.8", + "@babel/preset-env": "7.19.3", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.9", + "@sniptt/monads": "^0.5.10", "@typescript-eslint/parser": "^5.31.0", "autosize": "^5.0.1", + "babel-loader": "^8.2.5", + "babel-plugin-inferno": "^6.5.0", "check-password-strength": "^2.0.7", "choices.js": "^10.1.0", + "class-transformer": "^0.5.1", "classnames": "^2.3.1", + "clean-webpack-plugin": "^4.0.0", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.7.1", "emoji-short-name": "^2.0.0", "express": "~4.18.1", "i18next": "^21.8.14", @@ -34,70 +47,57 @@ "inferno-server": "^8.0.3", "isomorphic-cookie": "^1.2.4", "jwt-decode": "^3.1.2", + "lemmy-js-client": "0.17.0-rc.46", "markdown-it": "^13.0.1", "markdown-it-container": "^3.0.0", "markdown-it-footnote": "^3.0.3", "markdown-it-html5-embed": "^1.0.0", "markdown-it-sub": "^1.0.0", "markdown-it-sup": "^1.0.0", + "mini-css-extract-plugin": "^2.6.1", "moment": "^2.29.4", + "node-fetch": "^2.6.1", + "reflect-metadata": "^0.1.13", "register-service-worker": "^1.7.2", + "run-node-webpack-plugin": "^1.3.0", "rxjs": "^7.5.6", "sass": "^1.54.0", + "sass-loader": "^13.0.2", "serialize-javascript": "^6.0.0", "tippy.js": "^6.3.7", "toastify-js": "^1.12.0", "tributejs": "^5.1.3", + "webpack": "5.74.0", + "webpack-cli": "^4.10.0", + "webpack-node-externals": "^3.0.0", "websocket-ts": "^1.1.1" }, "devDependencies": { "@babel/core": "^7.18.9", - "@babel/plugin-proposal-decorators": "^7.18.9", - "@babel/plugin-transform-runtime": "^7.18.9", - "@babel/plugin-transform-typescript": "^7.18.8", - "@babel/preset-env": "7.19.3", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.18.9", - "@sniptt/monads": "^0.5.10", "@types/autosize": "^4.0.0", "@types/express": "^4.17.13", "@types/node": "^18.6.2", "@types/node-fetch": "^2.6.2", "@types/serialize-javascript": "^5.0.1", "@typescript-eslint/eslint-plugin": "^5.31.0", - "babel-loader": "^8.2.5", - "babel-plugin-inferno": "^6.5.0", "bootstrap": "^5.2.0", "bootswatch": "^5.2.0", - "class-transformer": "^0.5.1", - "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.7.1", "eslint": "^8.20.0", "eslint-plugin-inferno": "^7.31.8", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.1", "import-sort-style-module": "^6.0.0", - "lemmy-js-client": "0.17.0-rc.46", "lint-staged": "^13.0.3", - "mini-css-extract-plugin": "^2.6.1", - "node-fetch": "^2.6.1", "prettier": "^2.7.1", "prettier-plugin-import-sort": "^0.0.7", "prettier-plugin-organize-imports": "^3.0.0", "prettier-plugin-packagejson": "^2.2.18", - "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", - "run-node-webpack-plugin": "^1.3.0", - "sass-loader": "^13.0.2", "sortpack": "^2.3.0", "style-loader": "^3.3.1", "terser": "^5.14.2", "typescript": "^4.8.4", - "webpack": "5.74.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "4.11.1", - "webpack-node-externals": "^3.0.0" + "webpack-dev-server": "4.11.1" }, "engines": { "node": ">=8.9.0"