Skip to content

Instantly share code, notes, and snippets.

View Frodigo's full-sized avatar

Marcin Kwiatkowski Frodigo

View GitHub Profile
@Frodigo
Frodigo / targetables.js
Created March 22, 2021 08:16
PWA Studio targetables example
const { Targetables } = require('@magento/pwa-buildpack')
module.exports = targets => {
const targetables = Targetables.using(targets);
const MainComponent = targetables.reactComponent(
'@magento/venia-ui/lib/components/Header/header.js'
);
@Frodigo
Frodigo / intercept.js
Created March 22, 2021 08:04
PWA Studio targets example
module.exports = targets => {
const veniaTargets = targets.of('@magento/venia-ui');
const routes = veniaTargets.routes;
routes.tap(
routesArray => {
routesArray.push({
name: 'New route',
pattern: '/new-route',
path: '@organization/module'
mport { arrayOf, bool, number, shape, string } from 'prop-types';
import { Form } from 'informed';
import { Price } from '@magento/peregrine';
import { useProductFullDetail } from '@magento/peregrine/lib/talons/ProductFullDetail/useProductFullDetail';
import { isProductConfigurable } from '@magento/peregrine/lib/util/isProductConfigurable';
import { mergeClasses } from '@magento/venia-ui/lib/classify';
import Breadcrumbs from '@magento/venia-ui/lib/components/Breadcrumbs';
import Button from '@magento/venia-ui/lib/components/Button';
const componentOverrideMapping = require('./componentOverrideMapping');
const moduleOverridePlugin = require('./moduleOverrideWebpackPlugin');
module.exports = targets => {
targets.of('@magento/pwa-buildpack').specialFeatures.tap(flags => {
flags[targets.name] = {esModules: true};
});
targets.of('@magento/pwa-buildpack').webpackCompiler.tap(compiler => {
new moduleOverridePlugin(componentOverrideMapping).apply(compiler);
})
const path = require('path');
const glob = require('glob');
module.exports = class NormalModuleOverridePlugin {
constructor(moduleOverrideMap) {
this.name = 'NormalModuleOverridePlugin';
this.moduleOverrideMap = moduleOverrideMap;
}
requireResolveIfCan(id, options = undefined) {
try {
module.exports = componentOverride = {
[`@magento/venia-ui/lib/components/ProductFullDetail/productFullDetail.js`]: './lib/components/ProductFullDetail/productFullDetail.js',
};
{
"name": "@marcinkwiatkowski/venia-ui-overwrites",
"version": "1.0.0",
"description": "",
"author": "Marcin Kwiatkowski <contact@frodigo.com>",
"license": "MIT",
"pwa-studio": {
"targets": {
"intercept": "intercept.js"
}
mdir -p packages/venia-ui-overwrites
touch packages/venia-ui-overwrites/package.json
touch packages/venia-ui-overwrites/componentOverrideMapping.js
touch packages/venia-ui-overwrites/moduleOveriddeWebpackPlugin.js
touch packages/venia-ui-overwrites/intercept.js
export { default } from './short-description';
// short-description.js
<div className={classes.root}>
<div className={classes.section}>
<RichText content={shortDescription} />
</div>
</div>