Ghost/ghost/portal
Daniel Lockyer e60fc167e4
Improved yarn ship for Portal
refs https://github.com/TryGhost/Toolbox/issues/426

- with the existing `ship` command, it publishes to npm before pushing
  to GitHub
- I fear we're likely to run into a scenario where the HEAD of `main` is
  behind, so the git push fails, and then rebasing the HEAD will break
  the tags that we created
- in this scenario, I think it's better to hard reset back, git pull and
  then try again
- in that case, we need to publish to npm after GitHub
- this commit should implement that
2022-10-05 15:48:10 +07:00
..
public Removed input auto-zoom for mobile 2022-03-28 15:53:25 +02:00
scripts Removed extraneous logging from Portal dev script 2022-10-05 15:13:34 +07:00
src Fixed various linting issues 2022-10-05 11:11:03 +07:00
.editorconfig Initial commit 2020-03-24 18:37:38 +05:30
.env Updated Sentry release tag to include full version 2021-06-25 09:42:06 +05:30
.env.development.local.example Updated local env file example to use default page 2020-05-01 22:21:44 +05:30
.eslintignore 🏗 Bumped major versions for React and CRA 2021-06-16 20:58:44 +05:30
.gitignore Allowed .env file in source control for test-utils setup 2020-04-28 23:15:09 +05:30
.yarnrc Added quotes to version-tag-prefix 2022-10-05 15:27:20 +07:00
package.json Improved yarn ship for Portal 2022-10-05 15:48:10 +07:00
README.md Updated Portal README and repository link 2022-10-05 15:22:17 +07:00
webpack.config.js Updated Portal build script to use rewired webpack config 2021-06-16 20:58:44 +05:30

Portal

npm version

Drop-in script to make the bulk of Ghost membership features work on any theme.

Usage

Ghost automatically injects Portal script on all sites running Ghost 4 or higher.

Alternatively, Portal can be enabled on non-ghost pages directly by inserting the below script on the page.

<script defer src="https://unpkg.com/@tryghost/portal@latest/umd/portal.min.js" data-ghost="https://mymemberssite.com"></script>

The data-ghost attribute expects the URL for your Ghost site, which is the only input Portal needs to work with your site's membership data via Ghost APIs.

Custom trigger button

By default, the script adds a default floating trigger button on the bottom right of your page which is used to trigger the popup on screen.

Its possible to add custom trigger button of your own by adding data attribute data-portal to any HTML tag on page, and also specify a specific page to open from it by using it as data-portal=signup.

The script also adds custom class names to this element for open and close state of popup - gh-portal-open and gh-portal-close, allowing devs to update its UI based on popup state.

Refer the docs to read about ways in which Portal can be customized for your site.

Basic Setup

This section is mostly relevant for core team only for active Portal development. Always use the unpkg link for testing/using latest released portal script.

  • Run yarn start:dev to start Portal in development mode
  • Open http://localhost:3000 to view it in the browser.
  • To use the local Portal script in a local Ghost site
    • Update config.local.json in Ghost repo to add "portal" config pointing to local dev server url as instructed on terminal.
    • By default, this uses port 5368 for loading local Portal script on Ghost site. It's also possible to specify a custom port when running the script using - --port=xxxx.

Available Scripts

In the project directory, you can also run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn build

Creates the production single minified bundle for external use in umd/portal.min.js.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

Publish

Run yarn ship to publish new version of script.

yarn ship is an alias for npm publish

(Core team only)

Learn More

This project was bootstrapped with Create React App. You can learn more in the Create React App documentation.