Patch Using Extend Mode

If you want to implement a patch that corrects an issue by extending a property, object, or method, follow the steps in this procedure. You can access the instructions for each patch from a list provided in Patch Instructions.

Note:

Before proceeding, familiarize yourself with Best Practices for Customizing SCA.

Step 1: Develop An Extension

  1. Create an extensions directory where you can store your custom module. Depending on your implementation, this directory might already exist.

    • If you’re patching SCA 2019.1 and earlier, create the extensions directory in the Modules directory.

    • If you’re patching SCA 2019.2 and later, create the extensions directory in the directory where the module that contains the file you want to extend resides.

  2. Within the extensions directory, create a subdirectory with a name similar to the module you need to customize.

    A good pattern to follow is: .../extensions/<module_name>Extension@<extension_version>

    For example, If you need to patch the CMSadapter module, name your subdirectory: CMSadapterExtension@1.0.0.

  3. Open the custom module subdirectory from the preceding step and create a new subdirectory with a name that reflects the type of file you need to patch. Possible types include: JavaScript, SuiteScript, Configuration, Sass, Template.

    For example: .../extensions/CMSadapterExtension@1.0.0/JavaScript

  4. In the subdirectory from the preceding step, create a file that includes the code needed for your extension.

    Name this file according to best practices.

    For example: CMSadapter.Component.Extension.js

  5. Open the file and extend the property, object, or method by copy-pasting the code sample included in your patch instructions.

  6. Save the file.

Step 2: Prepare the Developer Tools For Your Patch

  1. Open the custom module directory you created in the first part of this procedure. For example, if you are extending the CMSadapter module, open the CMSadapterExtension@1.0.0 directory.

  2. Create a file in the custom module directory named ns.package.json.

    For example : .../extensions/CMSadapterExtension@1.0.0/ns.package.json

  3. Paste the code provided in your patch instructions into the new ns.package.json file.

    The provided code is specific to the file type for your extension.

  4. In the top level of the SuiteCommerce Advanced directory, open the distro.json file.

    Note:

    For SuiteCommerce Advanced 2019.2 and later, the distro.json file is located in the Advanced directory. For example: SuiteCommerce Advanced 2019.2/SC_19.2_Live/Advanced/distro.json.

  5. Add your extension to the modules object in the distro.json file.

    Add your extension to the list of existing values that follow the “modules”: key as shown in the following example.

    Note:

    Values for keys in the modules object are release-specific and so the following example may not look exactly like the object in your distro.json file. Be sure to add your module to the list of existing values exactly as shown in the instructions for your patch

                    {
        "name": "SuiteCommerce Advanced Kilimanjaro",
        "version": "2.0",
        "isSCA": true,
        "buildToolsVersion": "1.3.1",
        "folders": {
            "modules": "Modules",
            "suitecommerceModules": "Modules/suitecommerce",
            "extensionsModules": "Modules/extensions",
            "thirdPartyModules": "Modules/third_parties",
            "distribution": "LocalDistribution",
            "deploy": "DeployDistribution"
        },
             "modules": {
                "extensions/CMSadapterExtension": "1.0.0",
                "extensions/MyExampleCartExtension1": "1.0.0",
                ... 
    
                  

    This step ensures that the Gulp tasks include your extension when you deploy. In the preceding example, extensions have been added at the beginning of the list of modules. However, you can add your extension anywhere in the list of existing values. The order of precedence in this list does not matter.

  6. You may need to add your custom extension as a dependency to the starters of the required applications.

    See your patch instructions for details.

  7. Save the distro.json file.

Step 3: Test and Deploy Your Patch

How you test and deploy depends on your patch.

Related Topics

Patches Overview
Patch Using Override Mode

General Notices