@jakubmazanec/carson-templates 2.0.1 → 2.1.0-next.1e9228c
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/build/constants.d.ts +1 -0
- package/build/constants.js +1 -0
- package/build/constants.js.map +2 -2
- package/build/dependency-versions.js +3 -1
- package/build/dependency-versions.js.map +2 -2
- package/package.json +1 -1
- package/source/constants.ts +1 -0
- package/source/dependency-versions.ts +3 -1
- package/templates/projects/remix-app/Dockerfile.ejs +41 -19
- package/templates/projects/remix-app/package.json.ejs +3 -2
- package/templates/workspace/.dockerignore.ejs +51 -0
- package/templates/workspace/.github/workflows/release-pull-request.yaml.ejs +22 -0
- package/templates/workspace/.github/workflows/release.yaml.ejs +23 -12
- package/templates/workspace/.gitignore.ejs +1 -0
- package/templates/workspace/package.json.create.ejs +1 -0
- package/templates/workspace/package.json.ejs +10 -4
package/build/constants.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare const TEST_COMMAND = "vitest run --coverage --passWithNoTests";
|
|
|
7
7
|
export declare const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
|
|
8
8
|
export declare const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
|
|
9
9
|
export declare const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
|
|
10
|
+
export declare const CHANGELOG_PACKAGE_NAME = "@jakubmazanec/changesets-changelog";
|
|
10
11
|
export declare const MAIN_BRANCH_NAMES: Set<string>;
|
|
11
12
|
export declare const DEVELOPMENT_BRANCH_NAMES: Set<string>;
|
|
12
13
|
export declare const LINT_IGNORE_PATTERNS: string[];
|
package/build/constants.js
CHANGED
|
@@ -8,6 +8,7 @@ export const TEST_COMMAND = "vitest run --coverage --passWithNoTests";
|
|
|
8
8
|
export const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
|
|
9
9
|
export const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
|
|
10
10
|
export const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
|
|
11
|
+
export const CHANGELOG_PACKAGE_NAME = "@jakubmazanec/changesets-changelog";
|
|
11
12
|
export const MAIN_BRANCH_NAMES = /* @__PURE__ */ new Set(["main", "master"]);
|
|
12
13
|
export const DEVELOPMENT_BRANCH_NAMES = /* @__PURE__ */ new Set(["development", "develop", "dev"]);
|
|
13
14
|
export const LINT_IGNORE_PATTERNS = [
|
package/build/constants.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../source/constants.ts"],
|
|
4
|
-
"sourcesContent": ["export const BUILD_DIRECTORY = 'build';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\n\nexport const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';\nexport const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';\nexport const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';\n\nexport const MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nexport const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);\n\nexport const LINT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'bin/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n '*.d.ts',\n '*.json',\n '*.md',\n '*.mdx',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const FORMAT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n 'npm-shrinkwrap.json',\n 'package-lock.json',\n 'CHANGELOG.md',\n 'LICENSE.md',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const TSCONFIG_COMPILER_OPTIONS = {\n allowSyntheticDefaultImports: true,\n composite: true,\n exactOptionalPropertyTypes: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n jsx: 'react-jsx',\n lib: ['dom', 'dom.iterable', 'es2022'],\n module: 'node16',\n moduleResolution: 'node16',\n noEmitOnError: false, // TODO: change to `true` when this is fixed: https://github.com/kulshekhar/ts-jest/issues/4198\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n skipLibCheck: true,\n strict: true,\n target: 'es2022',\n};\n\nexport const PRETTIER_OPTIONS = {\n arrowParens: 'always',\n bracketSameLine: false,\n bracketSpacing: false,\n embeddedLanguageFormatting: 'auto',\n experimentalTernaries: true,\n htmlWhitespaceSensitivity: 'css',\n jsxSingleQuote: false,\n printWidth: 100,\n proseWrap: 'always',\n quoteProps: 'as-needed',\n requirePragma: false,\n semi: true,\n singleQuote: true,\n trailingComma: 'all',\n // TODO: remove when this is fixed: https://github.com/prettier/prettier/issues/15956\n overrides: [\n {\n files: ['tsconfig.json'],\n options: {\n trailingComma: 'none',\n },\n },\n ],\n};\n\nexport const TYPEDOC_CONFIG = {\n plugin: 'typedoc-plugin-markdown',\n entryPoints: [`./${SOURCE_DIRECTORY}/main.ts`],\n out: 'docs',\n readme: 'none',\n githubPages: false,\n hideBreadcrumbs: true,\n};\n"],
|
|
5
|
-
"mappings": ";AAAO,aAAM,kBAAkB;AACxB,aAAM,mBAAmB;AAEzB,aAAM,uBAAuB,YAAY,gBAAgB,qDAAqD,eAAe;AAC7H,aAAM,uBAAuB,YAAY,gBAAgB,kEAAkE,eAAe;AAC1I,aAAM,iBAAiB;AACvB,aAAM,eAAe;AAErB,aAAM,sBAAsB;AAC5B,aAAM,wBAAwB;AAC9B,aAAM,6BAA6B;
|
|
4
|
+
"sourcesContent": ["export const BUILD_DIRECTORY = 'build';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\n\nexport const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';\nexport const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';\nexport const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';\nexport const CHANGELOG_PACKAGE_NAME = '@jakubmazanec/changesets-changelog';\n\nexport const MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nexport const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);\n\nexport const LINT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'bin/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n '*.d.ts',\n '*.json',\n '*.md',\n '*.mdx',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const FORMAT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n 'npm-shrinkwrap.json',\n 'package-lock.json',\n 'CHANGELOG.md',\n 'LICENSE.md',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const TSCONFIG_COMPILER_OPTIONS = {\n allowSyntheticDefaultImports: true,\n composite: true,\n exactOptionalPropertyTypes: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n jsx: 'react-jsx',\n lib: ['dom', 'dom.iterable', 'es2022'],\n module: 'node16',\n moduleResolution: 'node16',\n noEmitOnError: false, // TODO: change to `true` when this is fixed: https://github.com/kulshekhar/ts-jest/issues/4198\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n skipLibCheck: true,\n strict: true,\n target: 'es2022',\n};\n\nexport const PRETTIER_OPTIONS = {\n arrowParens: 'always',\n bracketSameLine: false,\n bracketSpacing: false,\n embeddedLanguageFormatting: 'auto',\n experimentalTernaries: true,\n htmlWhitespaceSensitivity: 'css',\n jsxSingleQuote: false,\n printWidth: 100,\n proseWrap: 'always',\n quoteProps: 'as-needed',\n requirePragma: false,\n semi: true,\n singleQuote: true,\n trailingComma: 'all',\n // TODO: remove when this is fixed: https://github.com/prettier/prettier/issues/15956\n overrides: [\n {\n files: ['tsconfig.json'],\n options: {\n trailingComma: 'none',\n },\n },\n ],\n};\n\nexport const TYPEDOC_CONFIG = {\n plugin: 'typedoc-plugin-markdown',\n entryPoints: [`./${SOURCE_DIRECTORY}/main.ts`],\n out: 'docs',\n readme: 'none',\n githubPages: false,\n hideBreadcrumbs: true,\n};\n"],
|
|
5
|
+
"mappings": ";AAAO,aAAM,kBAAkB;AACxB,aAAM,mBAAmB;AAEzB,aAAM,uBAAuB,YAAY,gBAAgB,qDAAqD,eAAe;AAC7H,aAAM,uBAAuB,YAAY,gBAAgB,kEAAkE,eAAe;AAC1I,aAAM,iBAAiB;AACvB,aAAM,eAAe;AAErB,aAAM,sBAAsB;AAC5B,aAAM,wBAAwB;AAC9B,aAAM,6BAA6B;AACnC,aAAM,yBAAyB;AAE/B,aAAM,oBAAoB,oBAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AACpD,aAAM,2BAA2B,oBAAI,IAAI,CAAC,eAAe,WAAW,KAAK,CAAC;AAE1E,aAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,4BAA4B;AAAA,EACvC,8BAA8B;AAAA,EAC9B,WAAW;AAAA,EACX,4BAA4B;AAAA,EAC5B,kCAAkC;AAAA,EAClC,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,KAAK,CAAC,OAAO,gBAAgB,QAAQ;AAAA,EACrC,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,eAAe;AAAA;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,aAAM,mBAAmB;AAAA,EAC9B,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,MAAM;AAAA,EACN,aAAa;AAAA,EACb,eAAe;AAAA;AAAA,EAEf,WAAW;AAAA,IACT;AAAA,MACE,OAAO,CAAC,eAAe;AAAA,MACvB,SAAS;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF;AAEO,aAAM,iBAAiB;AAAA,EAC5B,QAAQ;AAAA,EACR,aAAa,CAAC,KAAK,gBAAgB,UAAU;AAAA,EAC7C,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,iBAAiB;AACnB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import { createRequire } from "node:module";
|
|
|
4
4
|
import semver from "semver";
|
|
5
5
|
import {
|
|
6
6
|
CARSON_PACKAGE_NAME,
|
|
7
|
+
CHANGELOG_PACKAGE_NAME,
|
|
7
8
|
LINTER_CONFIG_PACKAGE_NAME,
|
|
8
9
|
TEMPLATE_PACKAGE_NAME
|
|
9
10
|
} from "./constants.js";
|
|
@@ -25,6 +26,7 @@ let isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVe
|
|
|
25
26
|
export const DEPENDENCY_VERSIONS = {
|
|
26
27
|
[CARSON_PACKAGE_NAME]: isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,
|
|
27
28
|
[TEMPLATE_PACKAGE_NAME]: isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
|
|
29
|
+
[CHANGELOG_PACKAGE_NAME]: "^2.0.0",
|
|
28
30
|
[LINTER_CONFIG_PACKAGE_NAME]: "^3.0.0",
|
|
29
31
|
"@changesets/cli": "^2.0.0",
|
|
30
32
|
"@remix-run/dev": "^2.0.0",
|
|
@@ -32,7 +34,7 @@ export const DEPENDENCY_VERSIONS = {
|
|
|
32
34
|
"@remix-run/node": "^2.0.0",
|
|
33
35
|
"@remix-run/react": "^2.0.0",
|
|
34
36
|
"@remix-run/serve": "^2.0.0",
|
|
35
|
-
"@testing-library/jest-dom": "^
|
|
37
|
+
"@testing-library/jest-dom": "^6.0.0",
|
|
36
38
|
"@testing-library/react": "^14.0.0",
|
|
37
39
|
"@types/lodash": "^4.0.0",
|
|
38
40
|
"@types/node": "^20.0.0",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../source/dependency-versions.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nimport {\n CARSON_PACKAGE_NAME,\n LINTER_CONFIG_PACKAGE_NAME,\n TEMPLATE_PACKAGE_NAME,\n} from './constants.js';\n\nlet require = createRequire(import.meta.url);\nlet carsonPackageVersion =\n semver\n .minVersion(\n (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {peerDependencies: Record<string, string>}\n ).peerDependencies[CARSON_PACKAGE_NAME] ?? '^1.0.0',\n )\n ?.format() ?? '1.0.0';\nlet isCarsonPackageVersionPrerelease = !!semver.prerelease(carsonPackageVersion)?.length;\nlet templatesPackageVersion = (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {version: string}\n).version;\nlet isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVersion)?.length;\n\nexport const DEPENDENCY_VERSIONS: Record<string, string> = {\n [CARSON_PACKAGE_NAME]:\n isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,\n [TEMPLATE_PACKAGE_NAME]:\n isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,\n [LINTER_CONFIG_PACKAGE_NAME]: '^3.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@remix-run/dev': '^2.0.0',\n '@remix-run/express': '^2.0.0',\n '@remix-run/node': '^2.0.0',\n '@remix-run/react': '^2.0.0',\n '@remix-run/serve': '^2.0.0',\n '@testing-library/jest-dom': '^
|
|
5
|
-
"mappings": ";AAAA,OAAO,QAAQ;AACf,SAAQ,qBAAoB;AAC5B,OAAO,YAAY;AAEnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAI,UAAU,cAAc,YAAY,GAAG;AAC3C,IAAI,uBACF,OACG;AAAA,EAEG,KAAK;AAAA,IACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,MACxE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,EACA,iBAAiB,mBAAmB,KAAK;AAC7C,GACE,OAAO,KAAK;AAClB,IAAI,mCAAmC,CAAC,CAAC,OAAO,WAAW,oBAAoB,GAAG;AAClF,IAAI,0BACF,KAAK;AAAA,EACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,IACxE,UAAU;AAAA,EACZ,CAAC;AACH,EACA;AACF,IAAI,sCAAsC,CAAC,CAAC,OAAO,WAAW,uBAAuB,GAAG;AAEjF,aAAM,sBAA8C;AAAA,EACzD,CAAC,mBAAmB,GAClB,mCAAmC,uBAAuB,IAAI,oBAAoB;AAAA,EACpF,CAAC,qBAAqB,GACpB,sCAAsC,0BAA0B,IAAI,uBAAuB;AAAA,EAC7F,CAAC,0BAA0B,GAAG;AAAA,EAE9B,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,+BAA+B;AAAA,EAC/B,+BAA+B;AAAA,EAC/B,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EACT,2BAA2B;AAAA,EAC3B,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AACV;",
|
|
4
|
+
"sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nimport {\n CARSON_PACKAGE_NAME,\n CHANGELOG_PACKAGE_NAME,\n LINTER_CONFIG_PACKAGE_NAME,\n TEMPLATE_PACKAGE_NAME,\n} from './constants.js';\n\nlet require = createRequire(import.meta.url);\nlet carsonPackageVersion =\n semver\n .minVersion(\n (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {peerDependencies: Record<string, string>}\n ).peerDependencies[CARSON_PACKAGE_NAME] ?? '^1.0.0',\n )\n ?.format() ?? '1.0.0';\nlet isCarsonPackageVersionPrerelease = !!semver.prerelease(carsonPackageVersion)?.length;\nlet templatesPackageVersion = (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {version: string}\n).version;\nlet isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVersion)?.length;\n\nexport const DEPENDENCY_VERSIONS: Record<string, string> = {\n [CARSON_PACKAGE_NAME]:\n isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,\n [TEMPLATE_PACKAGE_NAME]:\n isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,\n [CHANGELOG_PACKAGE_NAME]: '^2.0.0',\n [LINTER_CONFIG_PACKAGE_NAME]: '^3.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@remix-run/dev': '^2.0.0',\n '@remix-run/express': '^2.0.0',\n '@remix-run/node': '^2.0.0',\n '@remix-run/react': '^2.0.0',\n '@remix-run/serve': '^2.0.0',\n '@testing-library/jest-dom': '^6.0.0',\n '@testing-library/react': '^14.0.0',\n '@types/lodash': '^4.0.0',\n '@types/node': '^20.0.0',\n '@types/react': '^18.0.0',\n '@types/react-dom': '^18.0.0',\n '@vitest/coverage-v8': '^1.0.0',\n autoprefixer: '^10.0.0',\n concurrently: '^8.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^5.0.0',\n esbuild: '^0.19.0',\n eslint: '^8.0.0',\n 'happy-dom': '^13.0.0',\n lodash: '^4.0.0',\n isbot: '^4.0.0',\n 'patch-package': '^6.0.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.5.0',\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n tailwindcss: '^3.0.0',\n turbo: '^1.0.0',\n typedoc: '^0.24.0',\n 'typedoc-plugin-markdown': '^3.0.0',\n typescript: '^5.0.0',\n vite: '^5.0.0',\n vitest: '^1.0.0',\n};\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,QAAQ;AACf,SAAQ,qBAAoB;AAC5B,OAAO,YAAY;AAEnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAI,UAAU,cAAc,YAAY,GAAG;AAC3C,IAAI,uBACF,OACG;AAAA,EAEG,KAAK;AAAA,IACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,MACxE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,EACA,iBAAiB,mBAAmB,KAAK;AAC7C,GACE,OAAO,KAAK;AAClB,IAAI,mCAAmC,CAAC,CAAC,OAAO,WAAW,oBAAoB,GAAG;AAClF,IAAI,0BACF,KAAK;AAAA,EACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,IACxE,UAAU;AAAA,EACZ,CAAC;AACH,EACA;AACF,IAAI,sCAAsC,CAAC,CAAC,OAAO,WAAW,uBAAuB,GAAG;AAEjF,aAAM,sBAA8C;AAAA,EACzD,CAAC,mBAAmB,GAClB,mCAAmC,uBAAuB,IAAI,oBAAoB;AAAA,EACpF,CAAC,qBAAqB,GACpB,sCAAsC,0BAA0B,IAAI,uBAAuB;AAAA,EAC7F,CAAC,sBAAsB,GAAG;AAAA,EAC1B,CAAC,0BAA0B,GAAG;AAAA,EAE9B,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,+BAA+B;AAAA,EAC/B,+BAA+B;AAAA,EAC/B,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EACT,2BAA2B;AAAA,EAC3B,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AACV;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
package/source/constants.ts
CHANGED
|
@@ -9,6 +9,7 @@ export const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';
|
|
|
9
9
|
export const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';
|
|
10
10
|
export const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';
|
|
11
11
|
export const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';
|
|
12
|
+
export const CHANGELOG_PACKAGE_NAME = '@jakubmazanec/changesets-changelog';
|
|
12
13
|
|
|
13
14
|
export const MAIN_BRANCH_NAMES = new Set(['main', 'master']);
|
|
14
15
|
export const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);
|
|
@@ -4,6 +4,7 @@ import semver from 'semver';
|
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
CARSON_PACKAGE_NAME,
|
|
7
|
+
CHANGELOG_PACKAGE_NAME,
|
|
7
8
|
LINTER_CONFIG_PACKAGE_NAME,
|
|
8
9
|
TEMPLATE_PACKAGE_NAME,
|
|
9
10
|
} from './constants.js';
|
|
@@ -36,6 +37,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
|
|
|
36
37
|
isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,
|
|
37
38
|
[TEMPLATE_PACKAGE_NAME]:
|
|
38
39
|
isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
|
|
40
|
+
[CHANGELOG_PACKAGE_NAME]: '^2.0.0',
|
|
39
41
|
[LINTER_CONFIG_PACKAGE_NAME]: '^3.0.0',
|
|
40
42
|
|
|
41
43
|
'@changesets/cli': '^2.0.0',
|
|
@@ -44,7 +46,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
|
|
|
44
46
|
'@remix-run/node': '^2.0.0',
|
|
45
47
|
'@remix-run/react': '^2.0.0',
|
|
46
48
|
'@remix-run/serve': '^2.0.0',
|
|
47
|
-
'@testing-library/jest-dom': '^
|
|
49
|
+
'@testing-library/jest-dom': '^6.0.0',
|
|
48
50
|
'@testing-library/react': '^14.0.0',
|
|
49
51
|
'@types/lodash': '^4.0.0',
|
|
50
52
|
'@types/node': '^20.0.0',
|
|
@@ -6,7 +6,19 @@ strategy: overwrite
|
|
|
6
6
|
let lines = [];
|
|
7
7
|
|
|
8
8
|
for (let project of workspace.projects) {
|
|
9
|
-
|
|
9
|
+
if (project.config.deployment?.appName) {
|
|
10
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
|
|
11
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/node_modules /workspace/${project.relativePath}/node_modules`);
|
|
12
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
|
|
13
|
+
} else {
|
|
14
|
+
if (project.packageJson.bin) {
|
|
15
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/bin /workspace/${project.relativePath}/bin`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
|
|
19
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/node_modules /workspace/${project.relativePath}/node_modules`);
|
|
20
|
+
lines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
|
|
21
|
+
}
|
|
10
22
|
}
|
|
11
23
|
-%>
|
|
12
24
|
#
|
|
@@ -17,31 +29,41 @@ for (let project of workspace.projects) {
|
|
|
17
29
|
# Run `npx carson update workspace` to regenerate.
|
|
18
30
|
#
|
|
19
31
|
|
|
20
|
-
|
|
32
|
+
# Base stage
|
|
33
|
+
FROM node:20-slim as base
|
|
21
34
|
|
|
22
|
-
|
|
23
|
-
RUN adduser --disabled-password --home /app --uid 12000 --gecos '' nodeuser
|
|
24
|
-
RUN chown -R nodeuser /app
|
|
25
|
-
USER nodeuser
|
|
35
|
+
WORKDIR /workspace
|
|
26
36
|
|
|
27
|
-
|
|
37
|
+
ENV NODE_ENV=production
|
|
28
38
|
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
# Throw-away build stage to reduce size of final image
|
|
40
|
+
FROM base as build
|
|
41
|
+
|
|
42
|
+
# Install packages needed to install dependencies
|
|
43
|
+
RUN apt-get update -qq && \
|
|
44
|
+
apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3
|
|
34
45
|
|
|
35
46
|
# Install dependencies
|
|
36
|
-
|
|
47
|
+
COPY --link package-lock.json package.json ./
|
|
48
|
+
RUN npm ci --include=dev --ignore-scripts
|
|
37
49
|
|
|
38
|
-
#
|
|
39
|
-
|
|
40
|
-
ENV TZ=Europe/Prague
|
|
41
|
-
ENV NODE_ENV=production
|
|
42
|
-
ENV NODE_OPTIONS=--enable-source-maps
|
|
50
|
+
# Copy the workspace
|
|
51
|
+
COPY --link . .
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
# Build
|
|
54
|
+
RUN npm run build
|
|
55
|
+
|
|
56
|
+
# Remove development dependencies
|
|
57
|
+
RUN npm prune --omit=dev
|
|
58
|
+
|
|
59
|
+
# Final stage for app image
|
|
60
|
+
FROM base
|
|
61
|
+
|
|
62
|
+
# Copy files
|
|
63
|
+
COPY --from=build /workspace/node_modules /workspace/node_modules
|
|
64
|
+
<%- lines.join('\n') %>
|
|
45
65
|
|
|
66
|
+
# Start the server
|
|
67
|
+
WORKDIR /workspace/apps/somewhere
|
|
46
68
|
EXPOSE 5000
|
|
47
69
|
ENTRYPOINT ["npm", "start"]
|
|
@@ -10,6 +10,7 @@ let dependencies = [
|
|
|
10
10
|
'@remix-run/serve',
|
|
11
11
|
'cross-env',
|
|
12
12
|
'isbot',
|
|
13
|
+
'lodash',
|
|
13
14
|
'react',
|
|
14
15
|
'react-dom'
|
|
15
16
|
];
|
|
@@ -18,12 +19,12 @@ let developmentDependencies = [
|
|
|
18
19
|
'@remix-run/dev',
|
|
19
20
|
'@testing-library/jest-dom',
|
|
20
21
|
'@testing-library/react',
|
|
22
|
+
'@types/lodash',
|
|
21
23
|
'@types/node',
|
|
22
24
|
'@types/react',
|
|
23
25
|
'@types/react-dom',
|
|
24
26
|
'@vitest/coverage-v8',
|
|
25
27
|
'autoprefixer',
|
|
26
|
-
'cross-env',
|
|
27
28
|
'del-cli',
|
|
28
29
|
'eslint',
|
|
29
30
|
'happy-dom',
|
|
@@ -52,7 +53,7 @@ let packageJson = lodash.merge(
|
|
|
52
53
|
lint: 'eslint .',
|
|
53
54
|
start:
|
|
54
55
|
'cross-env NODE_ENV=production PORT=5000 remix-serve ./build/server/index.js',
|
|
55
|
-
test:
|
|
56
|
+
test: `del-cli coverage && ${TEST_COMMAND}`,
|
|
56
57
|
typecheck: 'tsc --project tsconfig.typecheck.json',
|
|
57
58
|
},
|
|
58
59
|
dependencies: getDependencies(dependencies, workspace),
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: '.dockerignore'
|
|
3
|
+
if: <%- workspace.projects.some((project) => project.config.deployment?.appName) %>
|
|
4
|
+
strategy: overwrite
|
|
5
|
+
---
|
|
6
|
+
<%
|
|
7
|
+
let lines = [];
|
|
8
|
+
|
|
9
|
+
for (let project of workspace.projects) {
|
|
10
|
+
if (project.config.deployment?.appName) {
|
|
11
|
+
lines.push(`!${project.relativePath}/app/**`);
|
|
12
|
+
lines.push(`!${project.relativePath}/public/**`);
|
|
13
|
+
lines.push(`!${project.relativePath}/env.d.ts`);
|
|
14
|
+
lines.push(`!${project.relativePath}/package.json`);
|
|
15
|
+
lines.push(`!${project.relativePath}/postcss.config.cjs`);
|
|
16
|
+
lines.push(`!${project.relativePath}/tailwind.config.ts`);
|
|
17
|
+
lines.push(`!${project.relativePath}/tsconfig.json`);
|
|
18
|
+
lines.push(`!${project.relativePath}/vite.config.ts`);
|
|
19
|
+
|
|
20
|
+
} else {
|
|
21
|
+
if (project.packageJson.bin) {
|
|
22
|
+
lines.push(`!${project.relativePath}/bin/**`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
lines.push(`!${project.relativePath}/${BUILD_DIRECTORY}/**`);
|
|
26
|
+
lines.push(`!${project.relativePath}/package.json`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
lines.push('!/package-lock.json');
|
|
31
|
+
lines.push('!/package.json');
|
|
32
|
+
lines.push('!/turbo.json');
|
|
33
|
+
-%>
|
|
34
|
+
#
|
|
35
|
+
# DO NOT EDIT!
|
|
36
|
+
# This file was autogenerated by Carson.
|
|
37
|
+
# Changes may cause incorrect behavior and will be lost when the file is regenerated.
|
|
38
|
+
#
|
|
39
|
+
# Run `npx carson update workspace` to regenerate.
|
|
40
|
+
#
|
|
41
|
+
|
|
42
|
+
# TODO: Use wildcards instead of package names when this is fixed: https://github.com/moby/moby/issues/40319
|
|
43
|
+
|
|
44
|
+
# ignore everything
|
|
45
|
+
*
|
|
46
|
+
|
|
47
|
+
# except files that are allowed to be in the Docker image
|
|
48
|
+
<%- lines.join('\n') %>
|
|
49
|
+
|
|
50
|
+
# we might also need .npmrc with token
|
|
51
|
+
!.npmrc
|
|
@@ -103,3 +103,25 @@ jobs:
|
|
|
103
103
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
104
104
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
105
105
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
106
|
+
<%
|
|
107
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
108
|
+
-%>
|
|
109
|
+
|
|
110
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
111
|
+
<%
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
for (let project of workspace.projects) {
|
|
115
|
+
if (project.config.deployment?.appName) {
|
|
116
|
+
-%>
|
|
117
|
+
|
|
118
|
+
- name: Deploy <%- project.name %>
|
|
119
|
+
run:
|
|
120
|
+
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable
|
|
121
|
+
env:
|
|
122
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
123
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
124
|
+
<%
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
-%>
|
|
@@ -122,20 +122,28 @@ jobs:
|
|
|
122
122
|
- name: Push changes
|
|
123
123
|
run: |
|
|
124
124
|
git push --follow-tags
|
|
125
|
+
<%
|
|
126
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
127
|
+
-%>
|
|
125
128
|
|
|
129
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
126
130
|
<%
|
|
131
|
+
}
|
|
132
|
+
|
|
127
133
|
for (let project of workspace.projects) {
|
|
128
134
|
if (project.config.deployment?.appName) {
|
|
129
135
|
-%>
|
|
130
|
-
|
|
136
|
+
|
|
137
|
+
- name: Deploy <%- project.name %>
|
|
131
138
|
run:
|
|
132
139
|
npm run deploy --workspace <%- project.name %>
|
|
133
140
|
env:
|
|
134
|
-
|
|
141
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
142
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
135
143
|
<%
|
|
136
144
|
}
|
|
137
145
|
}
|
|
138
|
-
|
|
146
|
+
-%>
|
|
139
147
|
|
|
140
148
|
- name: Checkout main branch
|
|
141
149
|
run: |
|
|
@@ -165,11 +173,6 @@ for (let project of workspace.projects) {
|
|
|
165
173
|
contents: read
|
|
166
174
|
id-token: write
|
|
167
175
|
steps:
|
|
168
|
-
- name: Cancel previous runs
|
|
169
|
-
uses: styfle/cancel-workflow-action@0.11.0
|
|
170
|
-
with:
|
|
171
|
-
access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
172
|
-
|
|
173
176
|
- uses: actions/checkout@v4
|
|
174
177
|
with:
|
|
175
178
|
token: ${{ secrets.PAT }}
|
|
@@ -252,17 +255,25 @@ for (let project of workspace.projects) {
|
|
|
252
255
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
253
256
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
254
257
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
258
|
+
<%
|
|
259
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
260
|
+
-%>
|
|
255
261
|
|
|
262
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
256
263
|
<%
|
|
264
|
+
}
|
|
265
|
+
|
|
257
266
|
for (let project of workspace.projects) {
|
|
258
267
|
if (project.config.deployment?.appName) {
|
|
259
268
|
-%>
|
|
260
|
-
|
|
269
|
+
|
|
270
|
+
- name: Deploy <%- project.name %>
|
|
261
271
|
run:
|
|
262
|
-
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-
|
|
272
|
+
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next
|
|
263
273
|
env:
|
|
264
|
-
|
|
274
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
275
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
265
276
|
<%
|
|
266
277
|
}
|
|
267
278
|
}
|
|
268
|
-
|
|
279
|
+
-%>
|
|
@@ -4,9 +4,10 @@ strategy: merge
|
|
|
4
4
|
---
|
|
5
5
|
<%
|
|
6
6
|
let dependencies = [
|
|
7
|
+
CARSON_PACKAGE_NAME,
|
|
8
|
+
CHANGELOG_PACKAGE_NAME,
|
|
9
|
+
TEMPLATE_PACKAGE_NAME,
|
|
7
10
|
'@changesets/cli',
|
|
8
|
-
'@jakubmazanec/carson',
|
|
9
|
-
'@jakubmazanec/carson-templates',
|
|
10
11
|
'@types/node',
|
|
11
12
|
'del-cli',
|
|
12
13
|
'patch-package',
|
|
@@ -44,9 +45,14 @@ let packageJson = lodash.merge(
|
|
|
44
45
|
workspace.config.overrides?.packageJson ?? {},
|
|
45
46
|
);
|
|
46
47
|
|
|
47
|
-
if (workspace.projects.find((project) => project.name ===
|
|
48
|
+
if (workspace.projects.find((project) => project.name === CARSON_PACKAGE_NAME)) {
|
|
48
49
|
packageJson.scripts.prepare +=
|
|
49
|
-
|
|
50
|
+
` && turbo run build --no-daemon --filter=${CARSON_PACKAGE_NAME}`;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (workspace.projects.find((project) => project.name === TEMPLATE_PACKAGE_NAME)) {
|
|
54
|
+
packageJson.scripts.prepare +=
|
|
55
|
+
` && turbo run build --no-daemon --filter=${TEMPLATE_PACKAGE_NAME}`;
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
packageJson.scripts.prepare += ' && carson update workspace';
|