npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

apostrophe-page-migrator

v2.0.4

Published

This module will allow for documents to be exported from existing Apostrope projects and imported into projects on other environments. For example, this can be used when moving data from a development environment into a production environment.

Readme

What does it do?

This module lets you export a page and all of the docs it joins with, via its own schema or via widgets, as a zipfile. That zipfile can then be imported into another Apostrophe site, usually one which began life as a copy of the same mongodb database.

Before you try this module

Check out apostrophe-workflow which is the most natural solution if your goal is to maintain internationalized, localized or draft and live versions of the same site.

"So when would I use this module?"

This module is useful in cases where the content of two sites is intentionally diverging but some content is still maintained in common. Otherwise, use apostrophe-workflow.

How do I enable it?

npm install --save apostrophe-page-migrator
// in app.js
modules: {
  'apostrophe-page-migrator': {}
}

How do I use it?

To export a page, go to that page, click "Page Menu," click "Page Settings" and then click the "Export" button. A zipfile will download to your computer.

To import a page, log in and click the "Import" button on the admin bar, then click the browse button to select and upload the zipfile.

Resolving conflicts

When importing a zipfile to a site that already contains one or more of the docs in the zipfile, the most recently edited version wins. If nothing appears to change this is usually the issue.

Permissions

Currently only an admin may import a zipfile. Anyone who can access page settings can export a zipfile.

Limitations

Unless the page being exported is the home page or a direct child of it, the parent page must exist in both sites, with the same _id. Otherwise the importer has no certain way of understanding where the page should be added/updated on the new site.

Similarly, if you think of the page as "the same" on two sites but they do not have the same _id, you will wind up with a duplicate after the import.

The related documents that are necessary, via joins in the schema of the page or its widgets, to render the page are the related documents that will be exported and imported with it. If joins were carried through without such a limitation the zipfile would typically be the entire site.