{ "name": "Responsively-App", "productName": "ResponsivelyApp", "version": "1.5.0", "description": "A developer-friendly browser for developing responsive web apps", "keywords": [ "developer-tools", "devtools", "browser", "web-dev" ], "homepage": "https://responsively.app", "bugs": { "url": "https://github.com/responsively-org/responsively-app/issues" }, "repository": { "type": "git", "url": "https://github.com/responsively-org/responsively-app.git" }, "author": { "name": "Responsively", "email": "p.manoj.vivek@gmail.com" }, "license": "MIT", "main": "./src/main/main.ts", "scripts": { "build": "concurrently \"yarn run build:main\" \"yarn run build:renderer\"", "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts", "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", "postinstall": "yarn rimraf --glob node_modules/browser-sync/dist/**/*.map && ts-node .erb/scripts/check-native-dep.js && ts-node postinstall.ts && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", "package": "ts-node ./.erb/scripts/clean.js dist && yarn run build && electron-builder build --publish never", "prepare": "cd .. && husky install desktop-app/.husky && chmod a+x desktop-app/.husky/pre-commit", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "dev": "yarn start", "start": "ts-node ./.erb/scripts/check-port-in-use.js && yarn run start:renderer", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", "start:preloadWebview": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload-webview.dev.ts", "start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts", "test": "jest", "typecheck": "tsc --noEmit" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "cross-env NODE_ENV=development eslint --cache --fix" ], "*.json,.{eslintrc,prettierrc}": [ "prettier --ignore-path .eslintignore --parser json --write" ], "*.{css,scss}": [ "prettier --ignore-path .eslintignore --single-quote --write" ], "*.{html,md,yml}": [ "prettier --ignore-path .eslintignore --single-quote --write" ] }, "browserslist": [], "prettier": { "singleQuote": true, "overrides": [ { "files": [ ".prettierrc", ".eslintrc" ], "options": { "parser": "json" } } ] }, "jest": { "moduleDirectories": [ "node_modules", "release/app/node_modules", "src" ], "moduleFileExtensions": [ "js", "jsx", "ts", "tsx", "json" ], "moduleNameMapper": { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/.erb/mocks/fileMock.js", "\\.(css|less|sass|scss)$": "identity-obj-proxy" }, "setupFiles": [ "./.erb/scripts/check-build-exists.ts" ], "testEnvironment": "jsdom", "testEnvironmentOptions": { "url": "http://localhost/" }, "testPathIgnorePatterns": [ "release/app/dist", ".erb/dll" ], "transform": { "\\.(ts|tsx|js|jsx)$": "ts-jest" } }, "dependencies": { "@fontsource/lato": "^4.5.8", "@headlessui/react": "^1.7.4", "@iconify/react": "^3.2.2", "@reduxjs/toolkit": "^1.8.3", "autoprefixer": "^10.4.14", "bluebird": "^3.7.2", "browser-sync": "^2.27.10", "classnames": "^2.3.1", "electron-args": "^0.1.0", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-store": "^8.0.2", "electron-updater": "^5.3.0", "emitter": "^0.0.5", "mousetrap": "^1.6.5", "os": "^0.1.2", "postcss": "^8.4.14", "re-resizable": "^6.9.9", "react": "^18.2.0", "react-detect-click-outside": "^1.1.7", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18.2.0", "react-markdown": "^8.0.7", "react-redux": "^8.0.5", "react-router-dom": "^6.3.0", "react-tabs": "^6.0.1", "redux": "^4.0.4", "redux-thunk": "^2.3.0", "replace": "^1.2.1", "tailwindcss": "^3.1.4", "use-sound": "^4.0.1", "uuid": "^9.0.0" }, "devDependencies": { "@electron/notarize": "^1.2.3", "@electron/rebuild": "^3.2.13", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@svgr/webpack": "^7.0.0", "@tailwindcss/typography": "^0.5.9", "@teamsupercell/typings-for-css-modules-loader": "^2.5.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", "@types/bluebird": "^3.5.36", "@types/browser-sync": "^2.26.3", "@types/howler": "^2.2.7", "@types/jest": "^28.1.7", "@types/mousetrap": "^1.6.10", "@types/node": "20.3.1", "@types/react": "18.0.28", "@types/react-dom": "18.0.10", "@types/react-test-renderer": "^18.0.0", "@types/terser-webpack-plugin": "^5.0.4", "@types/uuid": "^9.0.1", "@types/webpack-bundle-analyzer": "^4.4.2", "@typescript-eslint/eslint-plugin": "^5.33.1", "@typescript-eslint/parser": "^5.60.1", "browserslist-config-erb": "^0.0.3", "chalk": "^4.1.2", "concurrently": "^7.6.0", "core-js": "^3.29.0", "cross-env": "^7.0.3", "css-loader": "^6.7.3", "css-minimizer-webpack-plugin": "^5.0.0", "detect-port": "^1.3.0", "electron": "^25.2.0", "electron-builder": "^23.6.0", "electron-devtools-assembler": "^1.2.0", "electronmon": "^2.0.2", "eslint": "^8.36.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-erb": "^4.0.3", "eslint-import-resolver-typescript": "^3.4.1", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-compat": "^4.1.2", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-jsx-a11y": "^6.6.1", "eslint-plugin-promise": "^6.0.0", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.5.0", "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "lint-staged": "^13.2.2", "mini-css-extract-plugin": "^2.6.1", "postcss-loader": "^7.0.0", "prettier": "^2.7.1", "prettier-plugin-tailwindcss": "^0.2.3", "react-refresh": "^0.14.0", "react-test-renderer": "^18.2.0", "replace-in-file": "^6.3.5", "rimraf": "^4.2.0", "sass": "^1.54.4", "sass-loader": "^13.0.2", "style-loader": "^3.3.1", "terser-webpack-plugin": "^5.3.5", "ts-jest": "^28.0.8", "ts-loader": "^9.4.2", "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.1", "typescript": "^5.0.4", "url-loader": "^4.1.1", "webpack": "^5.76.0", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.8.0" }, "build": { "productName": "ResponsivelyApp", "appId": "app.responsively", "asar": true, "asarUnpack": "**\\*.{node,dll}", "files": [ "dist", "node_modules", "package.json" ], "afterSign": ".erb/scripts/notarize.js", "mac": { "target": { "target": "default", "arch": [ "arm64", "x64" ] }, "type": "distribution", "hardenedRuntime": true, "entitlements": "assets/entitlements.mac.plist", "entitlementsInherit": "assets/entitlements.mac.plist", "gatekeeperAssess": false }, "dmg": { "contents": [ { "x": 130, "y": 220 }, { "x": 410, "y": 220, "type": "link", "path": "/Applications" } ] }, "win": { "target": [ "nsis" ] }, "linux": { "target": [ "AppImage" ], "category": "Development" }, "directories": { "app": "release/app", "buildResources": "assets", "output": "release/build" }, "extraResources": [ "./assets/**" ], "publish": { "provider": "github" } }, "collective": { "url": "https://opencollective.com/responsively" }, "devEngines": { "node": ">=14.x", "npm": ">=7.x" }, "electronmon": { "patterns": [ "!**/**", "src/main/**/*", "src/store/**/*", "src/common/**/*" ], "logLevel": "quiet" } }