@shopify/create-hydrogen 3.25.0 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ Copyright 2019-present, Shopify Inc.
2
+
3
+ ​​
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5
+
6
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -48,7 +48,9 @@ If you encounter issues using the CLI or have feedback you'd like to share with
48
48
 
49
49
  - [Open a GitHub issue](https://github.com/Shopify/cli/issues) - To report bugs or request new features, open an issue in the Shopify CLI repository.
50
50
  - [Shopify Community Forums](https://community.shopify.com/) - Visit our forums to connect with the community and learn more about Shopify CLI development.
51
- - [CLI Documentation](https://shopify.dev/apps/tools/cli) - To view our complete API documentation
51
+ - [CLI Documentation - Apps](https://shopify.dev/apps/tools/cli) - To view CLI documentation for app development
52
+ - [CLI Documentation - Themes](https://shopify.dev/themes/tools/cli) - To view CLI documentation for theme development
53
+ - [CLI Documentation - Hydrogen](https://shopify.dev/custom-storefronts/tools/cli) - To view CLI documentation for Hydrogen (custom storefront) development
52
54
 
53
55
  ## Contribute 👩🏽‍💻
54
56
 
@@ -1,5 +1,5 @@
1
- import { string, path, error, file, output, os, ui, npm, environment, template, git, constants, version, } from '@shopify/cli-kit';
2
- import { installNodeModules, packageManager, packageManagerUsedForCreating, } from '@shopify/cli-kit/node/node-package-manager';
1
+ import { string, path, error, file, output, os, ui, npm, environment, template, git, constants } from '@shopify/cli-kit';
2
+ import { findPackageVersionUp, installNodeModules, packageManager, packageManagerUsedForCreating, } from '@shopify/cli-kit/node/node-package-manager';
3
3
  import { parseGitHubRepositoryURL } from '@shopify/cli-kit/node/github';
4
4
  import { Writable } from 'stream';
5
5
  const suggestHydrogenSupport = () => `
@@ -8,7 +8,7 @@ Help us make Hydrogen better by reporting this error so we can improve this mess
8
8
  - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new
9
9
  `;
10
10
  async function init(options) {
11
- const hydrogenVersion = await version.findPackageVersionUp({ fromModuleURL: import.meta.url });
11
+ const hydrogenVersion = await findPackageVersionUp({ fromModuleURL: import.meta.url });
12
12
  const user = (await os.username()) ?? '';
13
13
  const cliPackageVersion = options.shopifyCliVersion ?? (await constants.versions.cliKit());
14
14
  const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,EAAE,EACF,EAAE,EACF,GAAG,EACH,WAAW,EACX,QAAQ,EACR,GAAG,EACH,SAAS,EACT,OAAO,GACR,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,kBAAkB,EAClB,cAAc,EAEd,6BAA6B,GAC9B,MAAM,4CAA4C,CAAA;AAEnD,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAA;AAa/B,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;;;;CAIpC,CAAA;AAED,KAAK,UAAU,IAAI,CAAC,OAAoB;IACtC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAC,CAAC,CAAA;IAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1F,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,eAAe,CAAA;IACtF,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAA;IACtD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAEpE,MAAM,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAA;IAEjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAEpD,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAErC,IAAI,KAAK,GAAkB,EAAE,CAAA;QAE7B,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAA;QACpF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7D,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY;YAC5C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,YAAY,CAAC;YAC3D,CAAC,CAAC,mBAAmB,CAAA;QAEvB,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,MAAM,EAAE,CAAA;QAC/C,MAAM,EAAE,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,6BAA6B,OAAO,EAAE;YAC7C,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,GAAG,CAAC,kBAAkB,CAAC;oBAC3B,OAAO;oBACP,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBACF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;oBACjE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,iBAAiB,EAAE,sBAAsB,EAAE,CAAC,CAAA;iBAC/F;gBACD,OAAO,EAAC,cAAc,EAAE,4BAA4B,OAAO,EAAE,EAAC,CAAA;YAChE,CAAC;SACF,CAAC,CAAA;QAEF,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACnB;gBACE,KAAK,EAAE,yBAAyB,cAAc,EAAE;gBAChD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE;oBAC5B,OAAO,UAAU,CAAC,QAAQ,CACxB;wBACE;4BACE,KAAK,EAAE,wBAAwB;4BAC/B,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gCACtB,MAAM,YAAY,GAAG;oCACnB,IAAI,EAAE,cAAc;oCACpB,mBAAmB,EAAE,iBAAiB;oCACtC,gBAAgB,EAAE,sBAAsB;oCACxC,MAAM,EAAE,IAAI;oCACZ,kBAAkB,EAAE,OAAO,CAAC,cAAc;iCAC3C,CAAA;gCACD,MAAM,QAAQ,CAAC,sBAAsB,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAA;gCAEtF,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAA;4BACtC,CAAC;yBACF;wBACD;4BACE,KAAK,EAAE,uBAAuB;4BAC9B,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gCACtB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;gCAClE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;gCACpD,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;gCACpD,MAAM,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE;oCACtD,YAAY,EAAE;wCACZ,mBAAmB,EAAE,sBAAsB;qCAC5C;oCACD,eAAe,EAAE;wCACf,uBAAuB,EAAE,yBAAyB;wCAClD,cAAc,EAAE,UAAU;qCAC3B;iCACF,CAAC,CAAA;gCACF,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAA;gCACnC,MAAM,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;gCAE5D,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAA;gCACnC,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAA;4BACtC,CAAC;yBACF;qBACF,EACD,EAAC,UAAU,EAAE,KAAK,EAAC,CACpB,CAAA;gBACH,CAAC;aACF;SACF,CAAC,CAAA;QAEF,IAAI,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,0DAA0D;gBACjE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,YAAY,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CAAA;oBACvF,IAAI,CAAC,KAAK,GAAG,sDAAsD,CAAA;gBACrE,CAAC;aACF,CAAC,CAAA;SACH;QAED,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACnB;gBACE,KAAK,EAAE,gCAAgC,cAAc,EAAE;gBACvD,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;wBAC1B,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI;4BACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;4BAC9B,IAAI,EAAE,CAAA;wBACR,CAAC;qBACF,CAAC,CAAA;oBACF,MAAM,mBAAmB,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;gBACxE,CAAC;aACF;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAA;oBAElC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAA;gBACnC,CAAC;aACF;YACD;gBACE,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;oBACnD,MAAM,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;oBACrC,MAAM,GAAG,CAAC,MAAM,CAAC,sCAAsC,EAAE,EAAC,SAAS,EAAE,mBAAmB,EAAC,CAAC,CAAA;oBAC1F,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAA;gBAC3C,CAAC;aACF;SACF,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC9B,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC;YAClC,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE;SAC/C,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhB,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACxB,cAAc;SACT,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,cAAc,EACd,KAAK,CACN;;WAEQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,iDAAiD,CAAC,EAAE,CAAC,CAAA;IAErG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;;;UAGlB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,qBAAqB,CAAC;oCACjC,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,qBAAyC;IACpE,IAAI,qBAAqB,IAAI,cAAc,CAAC,QAAQ,CAAC,qBAAuC,CAAC,EAAE;QAC7F,OAAO,qBAAuC,CAAA;KAC/C;IACD,MAAM,kBAAkB,GAAG,6BAA6B,EAAE,CAAA;IAC1D,OAAO,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACtE,CAAC;AAED,eAAe,IAAI,CAAA;AAOnB,KAAK,UAAU,gBAAgB,CAAC,WAA4B;IAC1D,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,sBAAsB,CAAA;IAEhD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,WAA4B,EAC5B,KAAc,EACd,mBAAwC;IAExC,MAAM,EAAC,eAAe,EAAE,YAAY,EAAC,GAAG,mBAAmB,CAAA;IAE3D,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAA;IAC/D,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAA;IAEzD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3C,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,GAAG,CAAE,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,CAAE,CAAA;IACrF,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE;QACT,MAAM,sBAAsB,GAAG;YAC7B,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAW,EAAE;YACjG,uBAAuB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAW,EAAE;SAC/G,CAAA;QAED,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;YAC3C,CAAC,CAAC,EAAC,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,sBAAsB,EAAC;YACvD,CAAC,CAAC,sBAAsB,CAAA;QAE1B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW;YAC/C,CAAC,CAAC,EAAC,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,sBAAsB,EAAC;YACzD,CAAC,CAAC,sBAAsB,CAAA;KAC3B;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,cAA8B,EAAE,MAAgB;IACpG,IAAI,cAAc,KAAK,MAAM,EAAE;QAC7B,MAAM,YAAY,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAA;KAC3D;IACD,MAAM,kBAAkB,CAAC,EAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAA;AACzE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,OAAe;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,GAAG,OAAO,IAAI,CAAA;IACnC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;KAC5B;IACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAChD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,kBAA0B;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B;QACE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC;KAC/C,EACD;QACE,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,CAAC,oBAAoB,CAAC;KAC/B,CACF,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAC5F,CAAC","sourcesContent":["import {\n string,\n path,\n error,\n file,\n output,\n os,\n ui,\n npm,\n environment,\n template,\n git,\n constants,\n version,\n} from '@shopify/cli-kit'\nimport {\n installNodeModules,\n packageManager,\n PackageManager,\n packageManagerUsedForCreating,\n} from '@shopify/cli-kit/node/node-package-manager'\n\nimport {parseGitHubRepositoryURL} from '@shopify/cli-kit/node/github'\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n template: string\n directory: string\n packageManager?: string\n shopifyCliVersion?: string\n cliHydrogenPackageVersion?: string\n hydrogenVersion?: string\n local: boolean\n}\n\nconst suggestHydrogenSupport = () => `\nHelp us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.\n - Chat with us on Discord: https://discord.com/invite/ppSbThrFaS\n - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new\n`\n\nasync function init(options: InitOptions) {\n const hydrogenVersion = await version.findPackageVersionUp({fromModuleURL: import.meta.url})\n const user = (await os.username()) ?? ''\n const cliPackageVersion = options.shopifyCliVersion ?? (await constants.versions.cliKit())\n const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion\n const hydrogenPackageVersion = options.hydrogenVersion\n const packageManager = inferPackageManager(options.packageManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await ui.nonEmptyDirectoryPrompt(outputDirectory)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templateScaffoldDir = path.join(tmpDir, 'app')\n\n await file.mkdir(templateDownloadDir)\n await file.mkdir(templateScaffoldDir)\n\n let tasks: ui.ListrTasks = []\n\n const templateInfo = await parseGitHubRepositoryURL(options.template).valueOrAbort()\n const branch = templateInfo.ref ? `#${templateInfo.ref}` : ''\n const templatePath = templateInfo.subDirectory\n ? path.join(templateDownloadDir, templateInfo.subDirectory)\n : templateDownloadDir\n\n const repoUrl = `${templateInfo.http}${branch}`\n await ui.task({\n title: `Downloading template from ${repoUrl}`,\n task: async () => {\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n shallow: true,\n })\n if (!(await file.exists(path.join(templatePath, 'package.json')))) {\n throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport())\n }\n return {successMessage: `Downloaded template from ${repoUrl}`}\n },\n })\n\n tasks = tasks.concat([\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr(\n [\n {\n title: 'Parsing template files',\n task: async (_, task) => {\n const templateData = {\n name: hyphenizedName,\n shopify_cli_version: cliPackageVersion,\n hydrogen_version: hydrogenPackageVersion,\n author: user,\n dependency_manager: options.packageManager,\n }\n await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData)\n\n task.title = 'Template files parsed'\n },\n },\n {\n title: 'Updating package.json',\n task: async (_, task) => {\n const packageJSON = await npm.readPackageJSON(templateScaffoldDir)\n const cliVersion = await constants.versions.cliKit()\n await npm.updateAppData(packageJSON, hyphenizedName)\n await updateCLIDependencies(packageJSON, options.local, {\n dependencies: {\n '@shopify/hydrogen': hydrogenPackageVersion,\n },\n devDependencies: {\n '@shopify/cli-hydrogen': cliHydrogenPackageVersion,\n '@shopify/cli': cliVersion,\n },\n })\n await updateCLIScripts(packageJSON)\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ],\n {concurrent: false},\n )\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configuring the project's NPM registry\",\n task: async (_, task) => {\n await writeToNpmrc(templateScaffoldDir, `@shopify:registry=https://registry.npmjs.org`)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Installing dependencies with ${packageManager}`,\n task: async (_, task) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await installDependencies(templateScaffoldDir, packageManager, stdout)\n },\n },\n {\n title: 'Cleaning up',\n task: async (_, task) => {\n await cleanup(templateScaffoldDir)\n\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n await git.addAll(templateScaffoldDir)\n await git.commit('Initial commit generated by Hydrogen', {directory: templateScaffoldDir})\n task.title = 'Git repository initialized'\n },\n },\n ])\n\n const list = ui.newListr(tasks, {\n concurrent: false,\n rendererOptions: {collapse: false},\n rendererSilent: environment.local.isUnitTest(),\n })\n\n await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n✨ ${hyphenizedName} is ready to build!\n🚀 Run ${output.token.packagejsonScript(\n packageManager,\n 'dev',\n )} to start your local development server and start building.\n\n📚 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/custom-storefronts/hydrogen')}`)\n\n output.info(output.content`\n👋 Note: your project will display inventory from the Hydrogen Demo Store.\\\n To connect this project to your Shopify store’s inventory instead,\\\n update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\\\n store ID and Storefront API key.\\n`)\n}\n\nfunction inferPackageManager(optionsPackageManager: string | undefined): PackageManager {\n if (optionsPackageManager && packageManager.includes(optionsPackageManager as PackageManager)) {\n return optionsPackageManager as PackageManager\n }\n const usedPackageManager = packageManagerUsedForCreating()\n return usedPackageManager === 'unknown' ? 'npm' : usedPackageManager\n}\n\nexport default init\n\ninterface PackageDependencies {\n devDependencies: {[key: string]: string | undefined}\n dependencies: {[key: string]: string | undefined}\n}\n\nasync function updateCLIScripts(packageJSON: npm.PackageJSON): Promise<npm.PackageJSON> {\n packageJSON.scripts.dev = `shopify hydrogen dev`\n\n return packageJSON\n}\n\nasync function updateCLIDependencies(\n packageJSON: npm.PackageJSON,\n local: boolean,\n packageDependencies: PackageDependencies,\n): Promise<npm.PackageJSON> {\n const {devDependencies, dependencies} = packageDependencies\n\n packageJSON.devDependencies = packageJSON.devDependencies || {}\n packageJSON.dependencies = packageJSON.dependencies || {}\n\n Object.keys(devDependencies).forEach((key) => {\n packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key]!\n })\n\n Object.keys(dependencies).forEach((key) => {\n packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key]!\n })\n\n if (local) {\n const devDependencyOverrides = {\n '@shopify/cli': `file:${(await path.findUp('packages/cli-main', {type: 'directory'})) as string}`,\n '@shopify/cli-hydrogen': `file:${(await path.findUp('packages/cli-hydrogen', {type: 'directory'})) as string}`,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...devDependencyOverrides}\n : devDependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...devDependencyOverrides}\n : devDependencyOverrides\n }\n\n return packageJSON\n}\n\nasync function installDependencies(directory: string, packageManager: PackageManager, stdout: Writable): Promise<void> {\n if (packageManager === 'pnpm') {\n await writeToNpmrc(directory, 'auto-install-peers = true')\n }\n await installNodeModules({directory, packageManager, stdout, args: []})\n}\n\nasync function writeToNpmrc(directory: string, content: string) {\n const npmrcPath = path.join(directory, '.npmrc')\n const npmrcContent = `${content}\\n`\n if (!(await file.exists(npmrcPath))) {\n await file.touch(npmrcPath)\n }\n await file.appendFile(npmrcPath, npmrcContent)\n}\n\nasync function cleanup(webOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(webOutputDirectory, '**', '.git'),\n path.join(webOutputDirectory, '**', '.github'),\n path.join(webOutputDirectory, '**', '.gitmodules'),\n path.join(webOutputDirectory, '.stackblitzrc'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n return Promise.all(gitPaths.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {string, path, error, file, output, os, ui, npm, environment, template, git, constants} from '@shopify/cli-kit'\nimport {\n findPackageVersionUp,\n installNodeModules,\n packageManager,\n PackageManager,\n packageManagerUsedForCreating,\n} from '@shopify/cli-kit/node/node-package-manager'\n\nimport {parseGitHubRepositoryURL} from '@shopify/cli-kit/node/github'\nimport {Writable} from 'stream'\n\ninterface InitOptions {\n name: string\n template: string\n directory: string\n packageManager?: string\n shopifyCliVersion?: string\n cliHydrogenPackageVersion?: string\n hydrogenVersion?: string\n local: boolean\n}\n\nconst suggestHydrogenSupport = () => `\nHelp us make Hydrogen better by reporting this error so we can improve this message and/or fix the error.\n - Chat with us on Discord: https://discord.com/invite/ppSbThrFaS\n - Create an issue in GitHub: https://github.com/Shopify/hydrogen/issues/new\n`\n\nasync function init(options: InitOptions) {\n const hydrogenVersion = await findPackageVersionUp({fromModuleURL: import.meta.url})\n const user = (await os.username()) ?? ''\n const cliPackageVersion = options.shopifyCliVersion ?? (await constants.versions.cliKit())\n const cliHydrogenPackageVersion = options.cliHydrogenPackageVersion ?? hydrogenVersion\n const hydrogenPackageVersion = options.hydrogenVersion\n const packageManager = inferPackageManager(options.packageManager)\n const hyphenizedName = string.hyphenize(options.name)\n const outputDirectory = path.join(options.directory, hyphenizedName)\n\n await ui.nonEmptyDirectoryPrompt(outputDirectory)\n\n await file.inTemporaryDirectory(async (tmpDir) => {\n const templateDownloadDir = path.join(tmpDir, 'download')\n const templateScaffoldDir = path.join(tmpDir, 'app')\n\n await file.mkdir(templateDownloadDir)\n await file.mkdir(templateScaffoldDir)\n\n let tasks: ui.ListrTasks = []\n\n const templateInfo = await parseGitHubRepositoryURL(options.template).valueOrAbort()\n const branch = templateInfo.ref ? `#${templateInfo.ref}` : ''\n const templatePath = templateInfo.subDirectory\n ? path.join(templateDownloadDir, templateInfo.subDirectory)\n : templateDownloadDir\n\n const repoUrl = `${templateInfo.http}${branch}`\n await ui.task({\n title: `Downloading template from ${repoUrl}`,\n task: async () => {\n await git.downloadRepository({\n repoUrl,\n destination: templateDownloadDir,\n shallow: true,\n })\n if (!(await file.exists(path.join(templatePath, 'package.json')))) {\n throw new error.Abort(`The template ${templatePath} was not found.`, suggestHydrogenSupport())\n }\n return {successMessage: `Downloaded template from ${repoUrl}`}\n },\n })\n\n tasks = tasks.concat([\n {\n title: `Initializing your app ${hyphenizedName}`,\n task: async (_, parentTask) => {\n return parentTask.newListr(\n [\n {\n title: 'Parsing template files',\n task: async (_, task) => {\n const templateData = {\n name: hyphenizedName,\n shopify_cli_version: cliPackageVersion,\n hydrogen_version: hydrogenPackageVersion,\n author: user,\n dependency_manager: options.packageManager,\n }\n await template.recursiveDirectoryCopy(templatePath, templateScaffoldDir, templateData)\n\n task.title = 'Template files parsed'\n },\n },\n {\n title: 'Updating package.json',\n task: async (_, task) => {\n const packageJSON = await npm.readPackageJSON(templateScaffoldDir)\n const cliVersion = await constants.versions.cliKit()\n await npm.updateAppData(packageJSON, hyphenizedName)\n await updateCLIDependencies(packageJSON, options.local, {\n dependencies: {\n '@shopify/hydrogen': hydrogenPackageVersion,\n },\n devDependencies: {\n '@shopify/cli-hydrogen': cliHydrogenPackageVersion,\n '@shopify/cli': cliVersion,\n },\n })\n await updateCLIScripts(packageJSON)\n await npm.writePackageJSON(templateScaffoldDir, packageJSON)\n\n task.title = 'Package.json updated'\n parentTask.title = 'App initialized'\n },\n },\n ],\n {concurrent: false},\n )\n },\n },\n ])\n\n if (await environment.local.isShopify()) {\n tasks.push({\n title: \"[Shopifolks-only] Configuring the project's NPM registry\",\n task: async (_, task) => {\n await writeToNpmrc(templateScaffoldDir, `@shopify:registry=https://registry.npmjs.org`)\n task.title = \"[Shopifolks-only] Project's NPM registry configured.\"\n },\n })\n }\n\n tasks = tasks.concat([\n {\n title: `Installing dependencies with ${packageManager}`,\n task: async (_, task) => {\n const stdout = new Writable({\n write(chunk, encoding, next) {\n task.output = chunk.toString()\n next()\n },\n })\n await installDependencies(templateScaffoldDir, packageManager, stdout)\n },\n },\n {\n title: 'Cleaning up',\n task: async (_, task) => {\n await cleanup(templateScaffoldDir)\n\n task.title = 'Completed clean up'\n },\n },\n {\n title: 'Initializing a Git repository...',\n task: async (_, task) => {\n await git.initializeRepository(templateScaffoldDir)\n await git.addAll(templateScaffoldDir)\n await git.commit('Initial commit generated by Hydrogen', {directory: templateScaffoldDir})\n task.title = 'Git repository initialized'\n },\n },\n ])\n\n const list = ui.newListr(tasks, {\n concurrent: false,\n rendererOptions: {collapse: false},\n rendererSilent: environment.local.isUnitTest(),\n })\n\n await list.run()\n\n await file.move(templateScaffoldDir, outputDirectory)\n })\n\n output.info(output.content`\n✨ ${hyphenizedName} is ready to build!\n🚀 Run ${output.token.packagejsonScript(\n packageManager,\n 'dev',\n )} to start your local development server and start building.\n\n📚 Docs: ${output.token.link('Quick start guide', 'https://shopify.dev/custom-storefronts/hydrogen')}`)\n\n output.info(output.content`\n👋 Note: your project will display inventory from the Hydrogen Demo Store.\\\n To connect this project to your Shopify store’s inventory instead,\\\n update ${output.token.yellow(`${hyphenizedName}/hydrogen.config.js`)} with your\\\n store ID and Storefront API key.\\n`)\n}\n\nfunction inferPackageManager(optionsPackageManager: string | undefined): PackageManager {\n if (optionsPackageManager && packageManager.includes(optionsPackageManager as PackageManager)) {\n return optionsPackageManager as PackageManager\n }\n const usedPackageManager = packageManagerUsedForCreating()\n return usedPackageManager === 'unknown' ? 'npm' : usedPackageManager\n}\n\nexport default init\n\ninterface PackageDependencies {\n devDependencies: {[key: string]: string | undefined}\n dependencies: {[key: string]: string | undefined}\n}\n\nasync function updateCLIScripts(packageJSON: npm.PackageJSON): Promise<npm.PackageJSON> {\n packageJSON.scripts.dev = `shopify hydrogen dev`\n\n return packageJSON\n}\n\nasync function updateCLIDependencies(\n packageJSON: npm.PackageJSON,\n local: boolean,\n packageDependencies: PackageDependencies,\n): Promise<npm.PackageJSON> {\n const {devDependencies, dependencies} = packageDependencies\n\n packageJSON.devDependencies = packageJSON.devDependencies || {}\n packageJSON.dependencies = packageJSON.dependencies || {}\n\n Object.keys(devDependencies).forEach((key) => {\n packageJSON.devDependencies[key] = devDependencies[key] || packageJSON.devDependencies[key]!\n })\n\n Object.keys(dependencies).forEach((key) => {\n packageJSON.dependencies[key] = dependencies[key] || packageJSON.dependencies[key]!\n })\n\n if (local) {\n const devDependencyOverrides = {\n '@shopify/cli': `file:${(await path.findUp('packages/cli-main', {type: 'directory'})) as string}`,\n '@shopify/cli-hydrogen': `file:${(await path.findUp('packages/cli-hydrogen', {type: 'directory'})) as string}`,\n }\n\n packageJSON.overrides = packageJSON.overrides\n ? {...packageJSON.overrides, ...devDependencyOverrides}\n : devDependencyOverrides\n\n packageJSON.resolutions = packageJSON.resolutions\n ? {...packageJSON.resolutions, ...devDependencyOverrides}\n : devDependencyOverrides\n }\n\n return packageJSON\n}\n\nasync function installDependencies(directory: string, packageManager: PackageManager, stdout: Writable): Promise<void> {\n if (packageManager === 'pnpm') {\n await writeToNpmrc(directory, 'auto-install-peers = true')\n }\n await installNodeModules({directory, packageManager, stdout, args: []})\n}\n\nasync function writeToNpmrc(directory: string, content: string) {\n const npmrcPath = path.join(directory, '.npmrc')\n const npmrcContent = `${content}\\n`\n if (!(await file.exists(npmrcPath))) {\n await file.touch(npmrcPath)\n }\n await file.appendFile(npmrcPath, npmrcContent)\n}\n\nasync function cleanup(webOutputDirectory: string) {\n const gitPaths = await path.glob(\n [\n path.join(webOutputDirectory, '**', '.git'),\n path.join(webOutputDirectory, '**', '.github'),\n path.join(webOutputDirectory, '**', '.gitmodules'),\n path.join(webOutputDirectory, '.stackblitzrc'),\n ],\n {\n dot: true,\n onlyFiles: false,\n onlyDirectories: false,\n ignore: ['**/node_modules/**'],\n },\n )\n\n return Promise.all(gitPaths.map((path) => file.rmdir(path, {force: true}))).then(() => {})\n}\n"]}