[
https://issues.apache.org/jira/browse/AIRAVATA-2951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18075270#comment-18075270
]
ASF subversion and git services commented on AIRAVATA-2951:
-----------------------------------------------------------
Commit 49b83cbeaeddf3fc281163ad1d21ed45859390bb in airavata-portals's branch
refs/heads/modernization from yasithdev
[ https://gitbox.apache.org/repos/asf?p=airavata-portals.git;h=49b83cbea ]
refactor(portal): monorepo tooling
- Introduce tooling/ workspace (@airavata/tooling) hosting shared configs:
eslint.config.js (flat, ESLint 9); prettier.config.js (ESM); vite.config.js
(exports defineAppConfig({appLabel, srcDir, entries, isLibrary, overrides}));
tsconfig.base.json (strict:true, allowJs:false); README.md.
- Switch monorepo from Yarn 1 classic to npm workspaces. Delete yarn.lock;
introduce package-lock.json. Pin [email protected]. Rewrite root
scripts (lint/format/typecheck/test/test:e2e/build) to use
`npm run X --workspaces --if-present`. Update Tiltfile to invoke npm
instead of yarn. DEVIATION from umbrella guardrail "Yarn 1 classic" —
rationale in
docs/superpowers/specs/2026-04-21-track-c-monorepo-tooling-design.md.
- Yarn-specific `link:` dep protocol converted to `*` across 5 workspaces.
Removed legacy .gitignore entry for package-lock.json (AIRAVATA-2951
comment).
- Wire all 7 existing workspaces to @airavata/tooling: per-workspace
eslint.config.js / prettier.config.js re-export or extend from the shared
package; vite.config.js replaced with a 6-10 line defineAppConfig() call.
Drop moved devDeps (eslint, eslint-plugin-vue, prettier, vite,
@vitejs/plugin-vue) from each workspace.
- ESLint 9 strict violations fixed: 36 bug-level errors across the tree
(eqeqeq, no-empty, no-prototype-builtins, vue/no-parsing-error,
no-unused-vars).
- Vue Style Guide + Vue 2 deprecation rules (vue/require-explicit-emits,
vue/require-default-prop, vue/require-prop-types, vue/order-in-components,
vue/attributes-order, vue/no-deprecated-*, etc.) demoted from error to
warn. DEVIATION from Q3 brainstorm decision: strict from day one. Track A's
<script setup lang="ts"> rewrite will obsolete most of these (defineEmits/
defineProps with TS types, modern slot syntax, no Options API ordering);
forcing a fix in Track C was 5-8 hours of throwaway churn. Track A will
re-enable full strict when the Options API is gone.
- Prettier first-pass format across the whole tree (376 files touched).
.prettierignore added to skip Django-templated HTML, cookiecutter
skeletons, Python files, lockfiles, build output.
- Fixed ESLint 9 flat-config gotcha: `ignores` must live in a config object
with only the `ignores` key, not alongside `rules`/`languageOptions`.
Missing this turned ignores into no-ops across plugin configs.
Functional parity: manifest keys byte-identical for all 4 Django apps
(admin, auth, dataparsers, workspace); all 7 workspaces build via
`npm run build --workspaces --if-present`; npm run lint exits 0; npm run
typecheck exits 0 (no .ts yet); prettier --check exits 0.
Pre-existing known state: vitest suites in apps/workspace don't run —
missing @vue/test-utils + jsdom env + broken plugin-api exports, all
pre-dating Track C. Deferred to Track Pre-A's test-harness work.
Spec: docs/superpowers/specs/2026-04-21-track-c-monorepo-tooling-design.md
> Django JS build failure: npm install fails with "enoent ENOENT: no such file
> or directory..."
> ---------------------------------------------------------------------------------------------
>
> Key: AIRAVATA-2951
> URL: https://issues.apache.org/jira/browse/AIRAVATA-2951
> Project: Airavata
> Issue Type: Bug
> Components: Django Portal
> Reporter: Marcus Christie
> Assignee: Marcus Christie
> Priority: Major
>
> npm install error:
> Sporadically npm install and build fails. Could be related to having local
> package references. Deleting the package-lock.json files seems to fix the
> issue and the package-lock.json files seem to be the culprit. I'm proposing
> that we just remove the package-lock.json files since
> # I'm seeing a lot of churn in these files. Doing {{npm install}} twice will
> often result in changes in the file even though that shouldn't be possible.
> So I'm not even sure what benefit they would provide if there weren't causing
> build problems.
> # We're not the only ones running into this problem and looks like there are
> still unresolved issues in npm (https://github.com/npm/npm/issues/17722)
> Error message:
> {noformat}
> npm ERR! path
> /data/portals/django-seagrid/airavata-django-portal/django_airavata/static/common/node_modules/.staging/django-airavata-api-41f718eb/node_modules/ansi-regex
> npm ERR! code ENOENT
> npm ERR! errno -2
> npm ERR! syscall rename
> npm ERR! enoent ENOENT: no such file or directory, rename
> '/data/portals/django-seagrid/airavata-django-portal/django_airavata/static/common/node_modules/.staging/django-airavata-api-41f718eb/node_modules/ansi-regex'
> ->
> '/data/portals/django-seagrid/airavata-django-portal/django_airavata/static/common/node_modules/.staging/ansi-regex-67ed7b67'
> npm ERR! enoent This is related to npm not being able to find a file.
> npm ERR! enoent
> npm ERR! A complete log of this run can be found in:
> npm ERR! /home/pga/.npm/_logs/2018-11-19T19_30_32_316Z-debug.log
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)