mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-30 14:22:07 +03:00
f4fb0fcbaa
no issue
- right now, we mount all API endpoints (v2, v3 and canary), alongside some
other routes, when Ghost is booting. This is wasteful because we don't
necessarily need any of the endpoints to get Ghost up and running
- even when Admin is used, it uses `canary` so `v2` and `v3` sit in memory
- the better approach here is to lazy load these endpoints, so they only
get mounted when needed
- this commit adds the `lazyUse` function into our Express lib,
which takes a mount path and a module function to execute down the
line. This gets passed to the wonderful `express-lazy-router` lib which
detects when we're calling an unmounted module and will mount it for
us
- from local testing, this speeds up boot time by about 18% and reduces
initial memory usage by about 6% 🚀
213 lines
7.9 KiB
JSON
213 lines
7.9 KiB
JSON
{
|
|
"name": "ghost",
|
|
"version": "4.19.0",
|
|
"description": "The professional publishing platform",
|
|
"author": "Ghost Foundation",
|
|
"homepage": "https://ghost.org",
|
|
"keywords": [
|
|
"ghost",
|
|
"blog",
|
|
"cms",
|
|
"headless",
|
|
"content",
|
|
"markdown"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git://github.com/TryGhost/Ghost.git"
|
|
},
|
|
"bugs": "https://github.com/TryGhost/Ghost/issues",
|
|
"contributors": "https://github.com/TryGhost/Ghost/graphs/contributors",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"start": "node index",
|
|
"dev": "grunt dev",
|
|
"dev:debug": "DEBUG=ghost:* grunt dev",
|
|
"setup": "yarn install && knex-migrator init && grunt symlink && grunt init || (exit 0)",
|
|
"main": "grunt shell:main && grunt subgrunt:init",
|
|
"build": "grunt build",
|
|
"test": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js --timeout=60000",
|
|
"test:all": "yarn test:unit && yarn test:integration && yarn test:e2e && yarn lint",
|
|
"test:debug": "DEBUG=ghost:test* yarn test",
|
|
"test:unit": "c8 --all -n 'core/{*.js,frontend,server,shared}' --reporter text-summary mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/unit' --timeout=2000",
|
|
"test:integration": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/integration' --timeout=5000",
|
|
"test:e2e": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/e2e-api' './test/e2e-frontend' './test/e2e-server' --timeout=10000",
|
|
"test:regression": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000",
|
|
"test:unit:slow": "yarn test:unit --reporter=mocha-slow-test-reporter",
|
|
"test:int:slow": "yarn test:integration --reporter=mocha-slow-test-reporter",
|
|
"test:e2e:slow": "yarn test:e2e --reporter=mocha-slow-test-reporter",
|
|
"test:reg:slow": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js './test/regression' --timeout=60000 --reporter=mocha-slow-test-reporter",
|
|
"cov:unit": "c8 report --all -n 'core/{*.js,frontend,server,shared}' --reporter text --reporter html",
|
|
"lint:server": "eslint --ignore-path .eslintignore 'core/server/**/*.js' 'core/*.js' '*.js'",
|
|
"lint:shared": "eslint --ignore-path .eslintignore 'core/shared/**/*.js'",
|
|
"lint:frontend": "eslint --ignore-path .eslintignore 'core/frontend/**/*.js'",
|
|
"lint:test": "eslint -c test/.eslintrc.js --ignore-path test/.eslintignore 'test/**/*.js'",
|
|
"lint:code": "yarn lint:server && yarn lint:shared && yarn lint:frontend",
|
|
"lint": "yarn lint:server && yarn lint:shared && yarn lint:frontend && yarn lint:test",
|
|
"fix:client": "yarn cache clean && cd core/client && rm -rf node_modules tmp dist && yarn && cd ../../",
|
|
"fix:server": "yarn cache clean && rm -rf node_modules && yarn",
|
|
"fix": "yarn fix:client && yarn fix:server"
|
|
},
|
|
"engines": {
|
|
"node": "^12.22.1 || ^14.16.1",
|
|
"cli": "^1.17.0"
|
|
},
|
|
"dependencies": {
|
|
"@nexes/nql": "0.6.0",
|
|
"@sentry/node": "6.13.3",
|
|
"@tryghost/adapter-manager": "0.2.17",
|
|
"@tryghost/admin-api-schema": "2.6.0",
|
|
"@tryghost/bookshelf-plugins": "0.3.3",
|
|
"@tryghost/bootstrap-socket": "0.2.12",
|
|
"@tryghost/color-utils": "0.1.2",
|
|
"@tryghost/config-url-helpers": "0.1.2",
|
|
"@tryghost/constants": "0.1.11",
|
|
"@tryghost/custom-theme-settings-service": "0.1.2",
|
|
"@tryghost/debug": "0.1.8",
|
|
"@tryghost/email-analytics-provider-mailgun": "1.0.3",
|
|
"@tryghost/email-analytics-service": "1.0.2",
|
|
"@tryghost/errors": "0.2.16",
|
|
"@tryghost/express-dynamic-redirects": "0.2.0",
|
|
"@tryghost/helpers": "1.1.52",
|
|
"@tryghost/image-transform": "1.0.16",
|
|
"@tryghost/job-manager": "0.8.10",
|
|
"@tryghost/kg-card-factory": "3.0.4",
|
|
"@tryghost/kg-default-atoms": "3.0.0",
|
|
"@tryghost/kg-default-cards": "5.0.7",
|
|
"@tryghost/kg-markdown-html-renderer": "5.0.5",
|
|
"@tryghost/kg-mobiledoc-html-renderer": "5.1.1",
|
|
"@tryghost/limit-service": "0.6.4",
|
|
"@tryghost/logging": "0.2.2",
|
|
"@tryghost/magic-link": "1.0.13",
|
|
"@tryghost/members-api": "2.2.2",
|
|
"@tryghost/members-csv": "1.1.7",
|
|
"@tryghost/members-importer": "0.3.3",
|
|
"@tryghost/members-offers": "0.6.1",
|
|
"@tryghost/members-ssr": "1.0.14",
|
|
"@tryghost/metrics": "0.2.4",
|
|
"@tryghost/mw-session-from-token": "0.1.25",
|
|
"@tryghost/nodemailer": "0.3.5",
|
|
"@tryghost/package-json": "1.0.5",
|
|
"@tryghost/promise": "0.1.12",
|
|
"@tryghost/request": "0.1.7",
|
|
"@tryghost/root-utils": "0.3.6",
|
|
"@tryghost/security": "0.2.12",
|
|
"@tryghost/session-service": "0.1.27",
|
|
"@tryghost/social-urls": "0.1.26",
|
|
"@tryghost/string": "0.1.20",
|
|
"@tryghost/tpl": "0.1.7",
|
|
"@tryghost/update-check-service": "0.2.3",
|
|
"@tryghost/url-utils": "2.0.2",
|
|
"@tryghost/validator": "0.1.7",
|
|
"@tryghost/version": "0.1.6",
|
|
"@tryghost/vhost-middleware": "1.0.18",
|
|
"@tryghost/zip": "1.1.17",
|
|
"amperize": "0.6.1",
|
|
"analytics-node": "5.1.0",
|
|
"bluebird": "3.7.2",
|
|
"body-parser": "1.19.0",
|
|
"bookshelf": "1.2.0",
|
|
"bookshelf-relations": "2.2.0",
|
|
"brute-knex": "4.0.1",
|
|
"bson-objectid": "2.0.1",
|
|
"bthreads": "0.5.1",
|
|
"cheerio": "0.22.0",
|
|
"compression": "1.7.4",
|
|
"connect-slashes": "1.4.0",
|
|
"cookie-session": "1.4.0",
|
|
"cors": "2.8.5",
|
|
"downsize": "0.0.8",
|
|
"express": "4.17.1",
|
|
"express-brute": "1.0.1",
|
|
"express-hbs": "2.4.0",
|
|
"express-jwt": "6.1.0",
|
|
"express-lazy-router": "1.0.4",
|
|
"express-query-boolean": "2.0.0",
|
|
"express-session": "1.17.2",
|
|
"fs-extra": "10.0.0",
|
|
"ghost-storage-base": "0.0.6",
|
|
"glob": "7.2.0",
|
|
"got": "9.6.0",
|
|
"gscan": "4.8.1",
|
|
"html-to-text": "5.1.1",
|
|
"image-size": "1.0.0",
|
|
"intl": "1.2.5",
|
|
"intl-messageformat": "5.4.3",
|
|
"js-yaml": "4.1.0",
|
|
"jsonpath": "1.1.1",
|
|
"jsonwebtoken": "8.5.1",
|
|
"juice": "8.0.0",
|
|
"keypair": "1.0.4",
|
|
"knex": "0.21.21",
|
|
"knex-migrator": "4.0.5",
|
|
"lodash": "4.17.21",
|
|
"mailgun-js": "0.22.0",
|
|
"metascraper": "5.24.9",
|
|
"metascraper-author": "5.24.9",
|
|
"metascraper-description": "5.24.9",
|
|
"metascraper-image": "5.24.9",
|
|
"metascraper-logo": "5.24.9",
|
|
"metascraper-logo-favicon": "5.24.9",
|
|
"metascraper-publisher": "5.24.9",
|
|
"metascraper-title": "5.24.9",
|
|
"metascraper-url": "5.24.9",
|
|
"moment": "2.24.0",
|
|
"moment-timezone": "0.5.23",
|
|
"multer": "1.4.3",
|
|
"mysql": "2.18.1",
|
|
"nconf": "0.11.3",
|
|
"node-jose": "2.0.0",
|
|
"oembed-parser": "1.4.8",
|
|
"passport": "0.5.0",
|
|
"passport-google-oauth": "2.0.0",
|
|
"path-match": "1.2.4",
|
|
"probe-image-size": "5.0.0",
|
|
"rss": "1.2.2",
|
|
"sanitize-html": "2.5.2",
|
|
"semver": "7.3.5",
|
|
"stoppable": "1.1.0",
|
|
"tough-cookie": "4.0.0",
|
|
"uuid": "8.3.2",
|
|
"xml": "1.0.1"
|
|
},
|
|
"optionalDependencies": {
|
|
"@tryghost/html-to-mobiledoc": "0.7.17",
|
|
"sqlite3": "5.0.2"
|
|
},
|
|
"devDependencies": {
|
|
"@lodder/grunt-postcss": "3.1.0",
|
|
"c8": "7.10.0",
|
|
"coffeescript": "2.6.1",
|
|
"cssnano": "5.0.8",
|
|
"eslint": "7.32.0",
|
|
"eslint-plugin-ghost": "2.6.0",
|
|
"grunt": "1.4.1",
|
|
"grunt-bg-shell": "2.3.3",
|
|
"grunt-contrib-clean": "2.0.0",
|
|
"grunt-contrib-compress": "2.0.0",
|
|
"grunt-contrib-copy": "1.0.0",
|
|
"grunt-contrib-symlink": "1.0.0",
|
|
"grunt-contrib-watch": "1.1.0",
|
|
"grunt-express-server": "0.5.4",
|
|
"grunt-shell": "3.0.1",
|
|
"grunt-subgrunt": "1.3.0",
|
|
"grunt-update-submodules": "0.4.1",
|
|
"jwks-rsa": "2.0.4",
|
|
"mocha": "9.1.3",
|
|
"mocha-slow-test-reporter": "0.1.2",
|
|
"mock-knex": "0.4.10",
|
|
"nock": "13.1.3",
|
|
"papaparse": "5.3.1",
|
|
"postcss": "8.3.9",
|
|
"rewire": "5.0.0",
|
|
"should": "13.2.3",
|
|
"sinon": "11.1.2",
|
|
"supertest": "6.1.6",
|
|
"tmp": "0.2.1"
|
|
},
|
|
"resolutions": {
|
|
"moment": "2.24.0",
|
|
"moment-timezone": "0.5.23"
|
|
}
|
|
}
|