diff --git a/.gitignore b/.gitignore index a519c00a..3aaafe1a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ node_modules/ /libpeerconnection.log /npm-debug.log* /testem.log +/.turbo /yarn-error.log # ember-try diff --git a/docs-app/.ember-cli b/docs-app/.ember-cli index 4ccb4bf4..347284d5 100644 --- a/docs-app/.ember-cli +++ b/docs-app/.ember-cli @@ -6,6 +6,7 @@ Setting `disableAnalytics` to true will prevent any data from being sent. */ "disableAnalytics": false, + "port": 4201, /** Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript diff --git a/docs-app/README.md b/docs-app/README.md index 84e3c665..c922f17d 100644 --- a/docs-app/README.md +++ b/docs-app/README.md @@ -21,8 +21,7 @@ You will need the following things properly installed on your computer. ## Running / Development * `ember serve` -* Visit your app at [http://localhost:4200](http://localhost:4200). -* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests). +* Visit your app at [http://localhost:4201](http://localhost:4201). ### Code Generators diff --git a/docs-app/package.json b/docs-app/package.json index 718ca516..bfffcf05 100644 --- a/docs-app/package.json +++ b/docs-app/package.json @@ -2,7 +2,7 @@ "name": "docs-app", "version": "0.0.0", "private": true, - "description": "Small description for docs-app goes here", + "description": "Documentation for the ember-headless-table addon", "repository": "", "license": "MIT", "author": "", @@ -19,7 +19,8 @@ "lint:hbs:fix": "ember-template-lint . --fix --no-error-on-unmatched-pattern", "lint:js:fix": "eslint . --fix", "start": "ember serve", - "test:ember": "ember test" + "test:ember": "ember test", + "_syncPnpm": "pnpm sync-pnpm" }, "devDependencies": { "@babel/core": "^7.21.8", @@ -103,7 +104,8 @@ "prettier": "^2.7.1", "qunit": "^2.19.4", "qunit-dom": "^2.0.0", - "tailwindcss": "^3.3.2", + "sync-pnpm": "workspace:*", + "tailwindcss": "^3.2.4", "typescript": "^4.9.5", "webpack": "^5.83.1" }, @@ -120,7 +122,7 @@ "dompurify": "^2.4.5", "ember-browser-services": "^4.0.4", "ember-cached-decorator-polyfill": "^1.0.1", - "ember-headless-table": "workspace:../ember-headless-table", + "ember-headless-table": "workspace:*", "ember-modifier": "^4.1.0", "ember-resources": "^6.0.0", "highlight.js": "^11.7.0", diff --git a/internal/sync-pnpm/bin/sync-pnpm.js b/internal/sync-pnpm/bin/sync-pnpm.js new file mode 100755 index 00000000..fe153f21 --- /dev/null +++ b/internal/sync-pnpm/bin/sync-pnpm.js @@ -0,0 +1,3 @@ +import syncPnpm from '../index.js'; + +await syncPnpm(); diff --git a/internal/sync-pnpm/index.js b/internal/sync-pnpm/index.js new file mode 100755 index 00000000..9dbd9358 --- /dev/null +++ b/internal/sync-pnpm/index.js @@ -0,0 +1,62 @@ +import { join, dirname } from 'node:path'; +import { createRequire } from 'node:module'; + +import { getPackages } from '@manypkg/get-packages'; +import { findRoot } from '@manypkg/find-root'; +import { readJson, pathExists, remove } from 'fs-extra/esm'; +import { hardLinkDir } from '@pnpm/fs.hard-link-dir'; +import resolvePackagePath from 'resolve-package-path'; +import Debug from 'debug'; +import lockfile from 'proper-lockfile'; + +const require = createRequire(import.meta.url); +const debug = Debug('sync-pnpm'); + +const syncDir = './dist'; + +export default async function syncPnpm(dir = process.cwd()) { + const root = await findRoot(dir); + const ownPackageJson = await readJson(join(dir, 'package.json')); + const ownDependencies = [ + ...Object.keys(ownPackageJson.dependencies ?? {}), + ...Object.keys(ownPackageJson.devDependencies ?? {}), + ]; + + const localPackages = (await getPackages(root.rootDir)).packages; + + const packagesToSync = localPackages.filter( + (p) => + p.packageJson.name !== 'sync-pnpm' && + ownDependencies.includes(p.packageJson.name) + ); + + for (const pkg of packagesToSync) { + const syncFrom = join(pkg.dir, syncDir); + const resolvedPackagePath = dirname( + resolvePackagePath(pkg.packageJson.name, dir) + ); + const syncTo = join(resolvedPackagePath, syncDir); + + if (await pathExists(syncFrom)) { + let releaseLock; + try { + releaseLock = await lockfile.lock(syncTo, { realpath: false }); + debug(`lockfile created for syncing to ${syncTo}`); + } catch (e) { + debug( + `lockfile already exists for syncing to ${syncTo}, some other sync process is already handling this directory, so skipping...` + ); + continue; + } + + if (await pathExists(syncTo)) { + await remove(syncTo); + debug(`removed ${syncTo} before syncing`); + } + + debug(`syncing from ${syncFrom} to ${syncTo}`); + await hardLinkDir(syncFrom, [syncTo]); + releaseLock(); + } + } +} diff --git a/internal/sync-pnpm/package.json b/internal/sync-pnpm/package.json new file mode 100644 index 00000000..8baef38d --- /dev/null +++ b/internal/sync-pnpm/package.json @@ -0,0 +1,21 @@ +{ + "name": "sync-pnpm", + "version": "0.0.0", + "private": true, + "description": "Sync build artifacts of workspace packages to pnpm injected/hard linked copies", + "repository": "https://github.com/CrowdStrike/ember-headless-table.git", + "license": "MIT", + "author": "CrowdStrike UX Team", + "main": "index.js", + "bin": "bin/sync-pnpm.js", + "type": "module", + "dependencies": { + "@manypkg/find-root": "^2.1.0", + "@manypkg/get-packages": "^2.1.0", + "@pnpm/fs.hard-link-dir": "^2.0.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.0", + "proper-lockfile": "^4.1.2", + "resolve-package-path": "^4.0.3" + } +} diff --git a/package.json b/package.json index 44282697..81610195 100644 --- a/package.json +++ b/package.json @@ -1,31 +1,32 @@ { - "name": "ember-headless-table-monorepo", + "name": "ember-headless-table", "version": "0.0.0", "private": true, - "repository": "", + "repository": "https://github.com/CrowdStrike/ember-headless-table.git", "license": "MIT", - "author": "", + "author": "CrowdStrike UX Team", "scripts": { "release": "changeset publish", - "build": "pnpm --filter ember-headless-table build", "build:docs": "pnpm build:docs-app && pnpm build:docs-api && cp ./docs-api/dist ./docs-app/dist/api -r", - "build:docs-app": "pnpm --filter docs-app build", - "build:docs-api": "pnpm --filter docs-api docs:build", "start": "concurrently 'npm:start:*' --restart-after 5000 --prefix-colors cyan,white,yellow", - "start:tests": "pnpm --filter test-app start", + "start:docs": "pnpm turbo --filter docs-app start", + "start:tests": "pnpm turbo --filter test-app start", "start:addon": "pnpm --filter ember-headless-table start --no-watch.clearScreen", "start:docs-api": "pnpm --filter 'docs-api' docs:watch --preserveWatchOutput", - "start:docs-app": "pnpm --filter 'docs-app' start -p 4201", + "build": "pnpm turbo build", + "build:docs-app": "pnpm turbo --filter docs-app build", + "build:docs-api": "pnpm turbo --filter docs-api docs:build", "ci:update": "npx ember-ci-update", - "test": "pnpm --filter test-app test", - "lint": "pnpm --filter '*' lint", + "test": "pnpm turbo --filter test-app test", + "lint": "pnpm turbo lint", "lint:fix": "pnpm --filter '*' lint:fix" }, "devDependencies": { "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.0", "concurrently": "^7.6.0", - "prettier": "^2.8.2" + "prettier": "^2.8.2", + "turbo": "^1.7.4" }, "pnpm": { "overrides": { @@ -51,4 +52,4 @@ "volta": { "node": "18.16.0" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08d0e017..ec2b70cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,9 @@ importers: prettier: specifier: ^2.8.2 version: 2.8.7 + turbo: + specifier: ^1.7.4 + version: 1.7.4 docs-api: devDependencies: @@ -67,7 +70,7 @@ importers: specifier: ^1.0.1 version: 1.0.1(@babel/core@7.21.8)(ember-source@4.10.0) ember-headless-table: - specifier: workspace:../ember-headless-table + specifier: workspace:* version: file:ember-headless-table(@babel/core@7.21.8)(@ember/test-helpers@2.9.3)(@ember/test-waiters@3.0.2)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/template@1.0.2)(ember-cached-decorator-polyfill@1.0.1)(ember-source@4.10.0) ember-modifier: specifier: ^4.1.0 @@ -328,8 +331,11 @@ importers: qunit-dom: specifier: ^2.0.0 version: 2.0.0 + sync-pnpm: + specifier: workspace:* + version: link:../internal/sync-pnpm tailwindcss: - specifier: ^3.3.2 + specifier: ^3.2.4 version: 3.3.2 typescript: specifier: ^4.9.5 @@ -498,6 +504,30 @@ importers: specifier: ^4.8.3 version: 4.9.5 + internal/sync-pnpm: + dependencies: + '@manypkg/find-root': + specifier: ^2.1.0 + version: 2.1.0 + '@manypkg/get-packages': + specifier: ^2.1.0 + version: 2.1.0 + '@pnpm/fs.hard-link-dir': + specifier: ^2.0.0 + version: 2.0.0 + debug: + specifier: ^4.3.4 + version: 4.3.4(supports-color@8.1.1) + fs-extra: + specifier: ^11.1.0 + version: 11.1.0 + proper-lockfile: + specifier: ^4.1.2 + version: 4.1.2 + resolve-package-path: + specifier: ^4.0.3 + version: 4.0.3 + test-app: dependencies: '@ember/test-helpers': @@ -516,7 +546,7 @@ importers: specifier: ^2.1.1 version: 2.1.1(ember-source@3.28.11) ember-headless-table: - specifier: workspace:../ember-headless-table + specifier: workspace:* version: file:ember-headless-table(@babel/core@7.21.4)(@ember/test-helpers@2.9.3)(@ember/test-waiters@3.0.2)(@glimmer/component@1.1.2)(@glimmer/tracking@1.1.2)(@glint/template@1.0.2)(ember-cached-decorator-polyfill@1.0.1)(ember-source@3.28.11) ember-resources: specifier: ^5.4.0 @@ -729,6 +759,9 @@ importers: qunit-dom: specifier: ^2.0.0 version: 2.0.0 + sync-pnpm: + specifier: workspace:* + version: link:../internal/sync-pnpm typescript: specifier: ^4.8.3 version: 4.9.5 @@ -3237,6 +3270,16 @@ packages: find-up: 4.1.0 fs-extra: 8.1.0 + /@manypkg/find-root@2.1.0: + resolution: {integrity: sha512-NEYRVlZCJYhRTqQURhv+WBpDcvmsp/M423Wcdvggv8lYJYD4GtqnTMLrQaTjA10fYt/PIc3tSdwV+wxJnWqPfQ==} + engines: {node: '>=14.18.0'} + dependencies: + '@manypkg/tools': 1.0.0 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: false + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: @@ -3247,6 +3290,24 @@ packages: globby: 11.1.0 read-yaml-file: 1.1.0 + /@manypkg/get-packages@2.1.0: + resolution: {integrity: sha512-IgWPEGgeKeR3ISlgHAMbY+m042yjNe3NPt8UmJT0xMwofe/UifUVtOq5aUBkNSygfOrcUh/j5JExLPuOx72quA==} + engines: {node: '>=14.18.0'} + dependencies: + '@manypkg/find-root': 2.1.0 + '@manypkg/tools': 1.0.0 + dev: false + + /@manypkg/tools@1.0.0: + resolution: {integrity: sha512-W8uDMhDGtwNyXYr6A+MWggxdL3spOQ8rfMNYpNph1GDJ0v084MnBFdpF1jvcPZ0okHAeYccV7le8AUs+fzwsAQ==} + engines: {node: '>=14.18.0'} + dependencies: + fs-extra: 8.1.0 + globby: 11.1.0 + jju: 1.4.0 + read-yaml-file: 1.1.0 + dev: false + /@mdn/browser-compat-data@5.2.51: resolution: {integrity: sha512-E72TUHMgX9+coOwyRf2C6OwAGlYgFS2UhpgokIYzzwrvnXDN8Qh7c+2L2KAnRcvf7RTZV52u8DhS4ajknyjlNw==} dev: true @@ -3362,6 +3423,11 @@ packages: tslib: 2.5.0 dev: true + /@pnpm/fs.hard-link-dir@2.0.0: + resolution: {integrity: sha512-UCXx4EmmCjOKiEmWX73fCER9s4iyThX7MOYd2mlUZq+QLt5FA2W9cnN5D8MFfwgkSLuSc8bWPWoqn+VN1nW1Tw==} + engines: {node: '>=16.14'} + dev: false + /@rollup/plugin-babel@6.0.3(@babel/core@7.21.4)(rollup@3.20.6): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} @@ -9191,7 +9257,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.14.0 eslint: 7.32.0 - eslint-module-utils: 2.8.0(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) + eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.41.0)(eslint@7.32.0) get-tsconfig: 4.5.0 globby: 13.1.4 @@ -9234,7 +9300,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): + /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -9257,6 +9323,7 @@ packages: dependencies: debug: 3.2.7 eslint: 7.32.0 + eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.5(eslint-plugin-import@2.27.5)(eslint@7.32.0) transitivePeerDependencies: - supports-color @@ -10255,6 +10322,15 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 + /fs-extra@11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra@4.0.3: resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} dependencies: @@ -11530,6 +11606,10 @@ packages: resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} hasBin: true + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: false + /jquery@3.6.4: resolution: {integrity: sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==} @@ -13854,7 +13934,6 @@ packages: graceful-fs: 4.2.11 retry: 0.12.0 signal-exit: 3.0.7 - dev: true /property-information@5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} @@ -14375,7 +14454,6 @@ packages: /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -15910,6 +15988,67 @@ packages: wcwidth: 1.0.1 yargs: 17.7.2 + /turbo-darwin-64@1.7.4: + resolution: {integrity: sha512-ZyYrQlUl8K/mYN1e6R7bEhPPYjMakz0DYMaexkyD7TAijQtWmTSd4a+I7VknOYNEssnUZ/v41GU3gPV1JAzxxQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-darwin-arm64@1.7.4: + resolution: {integrity: sha512-CKIXg9uqp1a+Yeq/c4U0alPOqvwLUq5SBZf1PGYhGqJsfG0fRBtJfkUjHuBsuJIOGXg8rCmcGSWGIsIF6fqYuw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-64@1.7.4: + resolution: {integrity: sha512-RIUl4RUFFyzD2T024vL7509Ygwcw+SEa8NOwPfaN6TtJHK7RZV/SBP3fLNVOptG9WRLnOWX3OvsLMbiOqDLLyA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-arm64@1.7.4: + resolution: {integrity: sha512-Bg65F0AjYYYxqE6RPf2H5TIGuA/EyWMeGOATHVSZOWAbYcnG3Ly03GZii8AHnUi7ntWBdjwvXf/QbOS1ayNB6A==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-64@1.7.4: + resolution: {integrity: sha512-rTaV50XZ2BRxRHOHqt1UsWfeDmYLbn8UKE6g2D2ED+uW+kmnTvR9s01nmlGWd2sAuWcRYQyQ2V+O09VfKPKcQw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-arm64@1.7.4: + resolution: {integrity: sha512-h8sxdKPvHTnWUPtwnYszFMmSO0P/iUUwmYY9n7iYThA71zSao28UeZ0H0Gw75cY3MPjvkjn2C4EBAUGPjuZJLw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo@1.7.4: + resolution: {integrity: sha512-8RLedDoUL0kkVKWEZ/RMM70BvKLyDFen06QuKKhYC2XNOfNKqFDqzIdcY/vGick869bNIWalChoy4O07k0HLsA==} + hasBin: true + requiresBuild: true + optionalDependencies: + turbo-darwin-64: 1.7.4 + turbo-darwin-arm64: 1.7.4 + turbo-linux-64: 1.7.4 + turbo-linux-arm64: 1.7.4 + turbo-windows-64: 1.7.4 + turbo-windows-arm64: 1.7.4 + dev: true + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6250c540..f9f30458 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: - 'ember-headless-table' + - 'internal/*' - 'test-app' - 'docs-app' - 'docs-api' diff --git a/test-app/.ember-cli b/test-app/.ember-cli index 4ccb4bf4..87ed8fc1 100644 --- a/test-app/.ember-cli +++ b/test-app/.ember-cli @@ -6,6 +6,7 @@ Setting `disableAnalytics` to true will prevent any data from being sent. */ "disableAnalytics": false, + "port": 4202, /** Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript diff --git a/test-app/README.md b/test-app/README.md index 16ff5505..e9e6f1be 100644 --- a/test-app/README.md +++ b/test-app/README.md @@ -21,8 +21,7 @@ You will need the following things properly installed on your computer. ## Running / Development * `ember serve` -* Visit your app at [http://localhost:4200](http://localhost:4200). -* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests). +* Visit your tests at [http://localhost:4202/tests](http://localhost:4202/tests). ### Code Generators diff --git a/test-app/package.json b/test-app/package.json index e895f8bc..f59198ab 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -2,7 +2,7 @@ "name": "test-app", "version": "0.0.0", "private": true, - "description": "Small description for test-app goes here", + "description": "Test app for the ember-headless-table addon", "repository": "", "license": "MIT", "author": "", @@ -21,7 +21,8 @@ "start": "ember serve", "test": "npm-run-all lint \"test:!(watch)\"", "test:ember": "ember test", - "test:watch": "ember test --server" + "test:watch": "ember test --server", + "_syncPnpm": "pnpm sync-pnpm" }, "dependencies": { "@ember/test-helpers": "^2.9.3", @@ -29,7 +30,7 @@ "ember-auto-import": "^2.6.2", "ember-cached-decorator-polyfill": "^1.0.1", "ember-functions-as-helper-polyfill": "^2.1.1", - "ember-headless-table": "workspace:../ember-headless-table", + "ember-headless-table": "workspace:*", "ember-resources": "^5.4.0", "tracked-built-ins": "^3.1.0" }, @@ -107,6 +108,7 @@ "prettier": "^2.7.1", "qunit": "^2.19.1", "qunit-dom": "^2.0.0", + "sync-pnpm": "workspace:*", "typescript": "^4.8.3", "webpack": "^5.74.0" }, diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..de58b72b --- /dev/null +++ b/turbo.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://turborepo.org/schema.json", + "pipeline": { + "start": { + "dependsOn": ["_syncPnpm"], + "outputs": [], + "cache": false, + "persistent": true + }, + "test": { + // Normally, A package's `test` script depends on that package's + // own `build` script being completed first. + // But for ember apps, they build themselves during + // test execution, so we can only get away with only + // building our dependencies + "dependsOn": ["_syncPnpm"], + "env": ["EMBER_TRY_CURRENT_SCENARIO", "EMBROIDER_TEST_SETUP_OPTIONS"] + }, + "build": { + "outputs": ["dist/**"], + "dependsOn": ["_syncPnpm"] + }, + "docs:build" : { + "outputs": ["dist/**"], + "dependsOn": ["_syncPnpm"] + }, + "_syncPnpm": { + "dependsOn": ["^build"], + "cache": false + }, + "lint": { + "outputs": [], + // We treat type checking as a lint, so it requires the build to be successful + "dependsOn": ["_syncPnpm"] + }, + // Used for typescript-support-matrix + "typecheck": { + "outputs": [], + "dependsOn": ["_syncPnpm"] + } + } +}