c55c91d7e0
* Add initial category field component with new typeahead Move search logic to useCategorySearch hook Add initial add new category logic Add parent category field to add new category modal Adding some debug changes Update category control to make use of internal selectItem function of select control Add changelogs Update pagesize back to 100 Add placeholder Empty placeholder Fix input and icon sizes Fix input underline Add max height and scroll to category dropdown Add sorting of category items Auto open parents when traversing up the tree using arrow keys Add several comments Add some initial unit tests for the category field component Add tests for useCategorySearch hook and fixed minor bug Update styling and autoselect parent if child is selected Fix styling issues for the select control dropdown inside a modal Fix issue with creating new category with parent Add function comment and fixed border styling Prune out create new category logic Fix minor css issue with border Revert some of the select control changes and make use of the custom type Fix up some styling changes * Fix type conflict * Revert change in state reducer * Add cursor pointer * Fix styling errors * Fix broken category tests * Fix merge conflict |
||
---|---|---|
.. | ||
admin-e2e-tests | ||
api | ||
api-core-tests | ||
components | ||
csv-export | ||
currency | ||
customer-effort-score | ||
data | ||
date | ||
dependency-extraction-webpack-plugin | ||
e2e-core-tests | ||
e2e-environment | ||
e2e-utils | ||
eslint-plugin | ||
experimental | ||
explat | ||
extend-cart-checkout-block | ||
internal-e2e-builds | ||
internal-js-tests | ||
internal-style-build | ||
navigation | ||
notices | ||
number | ||
onboarding | ||
tracks | ||
README.md | ||
tsconfig-cjs.json | ||
tsconfig.json |
README.md
WooCommerce Packages
Currently we have a small set of public-facing packages that can be dowloaded from npm and used in external applications.
@woocommerce/components
: A library of components that can be used to create pages in the WooCommerce dashboard and reports pages.@woocommerce/csv-export
: A set of functions to convert data into CSV values, and enable a browser download of the CSV data.@woocommerce/currency
: A class to display and work with currency values.@woocommerce/date
: A collection of utilities to display and work with date values.@woocommerce/navigation
: A collection of navigation-related functions for handling query parameter objects, serializing query parameters, updating query parameters, and triggering path changes.@woocommerce/tracks
: User event tracking utility functions for Automattic based projects.
Working with existing packages
- You can make changes to packages files as normal, and running
pnpm start
will compile and watch both app files and packages. - ⚠️ Make sure any dependencies you add to a package are also added to that package's
package.json
, not just the woocommerce-admin package.json - ⚠️ Make sure you're not importing from any woocommerce-admin files outside of the package (you can import from other packages, just use the
import from @woocommerce/package
syntax). - Add your change to the CHANGELOG for that package under the next version number, creating one if necessary (we use semantic versioning for packages, see these guidelines).
- Don't change the version in
package.json
. - Label your PR with the
Packages
label. - Once merged, you can wait for the next package release roundup, or you can publish a release now (see below, "Publishing packages").
Creating a new package
Most of this is pulled from the Gutenberg workflow.
To create a new package, add a new folder to /packages
, containing…
-
package.json
based on the template:{ "name": "@woocommerce/package-name", "version": "1.0.0-beta.0", "description": "Package description.", "author": "Automattic", "license": "GPL-2.0-or-later", "keywords": [ "wordpress", "woocommerce" ], "homepage": "https://github.com/woocommerce/woocommerce/tree/main/packages/[_YOUR_PACKAGE_]/README.md", "repository": { "type": "git", "url": "https://github.com/woocommerce/woocommerce.git" }, "bugs": { "url": "https://github.com/woocommerce/woocommerce/issues" }, "main": "build/index.js", "module": "build-module/index.js", "react-native": "src/index", "publishConfig": { "access": "public" } }
-
.npmrc
file which disables creatingpackage-lock.json
file for the package:package-lock=false
-
README.md
file containing at least:- Package name
- Package description
- Installation details
- Usage example
-
A
src
directory for the source of your module, which will be built by default using thepnpm run build:packages
command. Note that you'll want anindex.js
file that exports the package contents, see other packages for examples. -
Add the new package name to
packages/dependency-extraction-webpack-plugin/assets/packages.js
so that users of that plugin will also be able to use the new package without enqueuing it.
Publishing packages
- Run
pnpm run publish-packages:check
to run pnpm publish with the--dry-run
option - Create a PR with a CHANGELOG for each updated package (or try to add to the CHANGELOG with any PR editing
packages/
) - Run
pnpm run publish-packages:prod
to publish the package - OR Run
pnpm run publish-packages:dev
to publish "next" releases (installed aspnpm i @woocommerce/package@next
). Only use:dev
if you have a reason to. - Both commands will run
build:packages
before the publishing task, just to catch any last updates.
Publishing a single package
Sometimes, its helpful to release a singular package. This can be done directly through pnpm. Be sure versions and builds are correct.
- Bump the version in the package's package.json as well as its CHANGELOG file.
pnpm install && pnpm run build:packages
to build packages.cd packages/<package-name>
pnpm publish