@modern-js/monorepo-tools 2.15.0 → 2.17.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/CHANGELOG.md +38 -0
- package/dist/cjs/cli/build.js +10 -31
- package/dist/cjs/cli/buildWatch.js +11 -31
- package/dist/cjs/cli/clear.js +11 -31
- package/dist/cjs/cli/deploy.js +14 -36
- package/dist/cjs/cli/index.js +23 -22
- package/dist/cjs/cli/install.js +11 -31
- package/dist/cjs/cli/new.js +17 -37
- package/dist/cjs/commands/build.js +21 -46
- package/dist/cjs/commands/buildWatch.js +19 -36
- package/dist/cjs/commands/clear.js +17 -34
- package/dist/cjs/commands/deploy.js +25 -41
- package/dist/cjs/commands/index.js +22 -21
- package/dist/cjs/commands/install.js +19 -36
- package/dist/cjs/constants.js +13 -26
- package/dist/cjs/dag/create.js +16 -28
- package/dist/cjs/dag/edgeManager.js +24 -28
- package/dist/cjs/dag/index.js +11 -29
- package/dist/cjs/dag/operator.js +106 -123
- package/dist/cjs/dag/task.js +52 -63
- package/dist/cjs/dag/utils.js +52 -49
- package/dist/cjs/features/build/index.js +52 -68
- package/dist/cjs/features/clear/index.js +66 -47
- package/dist/cjs/features/deploy/index.js +126 -96
- package/dist/cjs/features/dev/cmds.js +10 -25
- package/dist/cjs/features/dev/createTask.js +93 -56
- package/dist/cjs/features/dev/index.js +43 -71
- package/dist/cjs/features/dev/watchProjectsState.js +89 -64
- package/dist/cjs/features/install/index.js +74 -63
- package/dist/cjs/hooks/index.js +9 -27
- package/dist/cjs/index.js +36 -53
- package/dist/cjs/locale/en.js +7 -25
- package/dist/cjs/locale/index.js +18 -28
- package/dist/cjs/locale/zh.js +7 -25
- package/dist/cjs/log/error.js +7 -25
- package/dist/cjs/log/multiTasksLog.js +42 -43
- package/dist/cjs/log/time.js +19 -29
- package/dist/cjs/log/utils.js +7 -25
- package/dist/cjs/package/index.js +28 -30
- package/dist/cjs/parse-config/index.js +61 -49
- package/dist/cjs/parse-config/monorepo.js +81 -67
- package/dist/cjs/projects/checkProjectChange.js +95 -73
- package/dist/cjs/projects/clearMemoryFiles.js +52 -44
- package/dist/cjs/projects/getProjects.js +38 -65
- package/dist/cjs/projects/getProjectsByPackagesConfig.js +93 -71
- package/dist/cjs/projects/getProjectsByWorkspaceFile.js +89 -85
- package/dist/cjs/type.js +4 -15
- package/dist/cjs/utils/install.js +69 -44
- package/dist/cjs/utils/types.js +4 -15
- package/dist/esm/cli/build.js +2 -8
- package/dist/esm/cli/buildWatch.js +4 -9
- package/dist/esm/cli/clear.js +4 -9
- package/dist/esm/cli/deploy.js +7 -14
- package/dist/esm/cli/install.js +4 -9
- package/dist/esm/cli/new.js +9 -14
- package/dist/esm/commands/build.js +7 -17
- package/dist/esm/commands/buildWatch.js +6 -8
- package/dist/esm/commands/clear.js +6 -8
- package/dist/esm/commands/deploy.js +10 -11
- package/dist/esm/commands/install.js +6 -8
- package/dist/esm/constants.js +2 -6
- package/dist/esm/dag/create.js +10 -7
- package/dist/esm/dag/edgeManager.js +17 -6
- package/dist/esm/dag/index.js +1 -4
- package/dist/esm/dag/operator.js +77 -74
- package/dist/esm/dag/task.js +39 -30
- package/dist/esm/dag/utils.js +39 -27
- package/dist/esm/features/build/index.js +22 -27
- package/dist/esm/features/clear/index.js +4 -6
- package/dist/esm/features/deploy/index.js +55 -50
- package/dist/esm/features/dev/cmds.js +4 -4
- package/dist/esm/features/dev/createTask.js +31 -15
- package/dist/esm/features/dev/index.js +19 -27
- package/dist/esm/features/dev/watchProjectsState.js +41 -31
- package/dist/esm/features/install/index.js +11 -15
- package/dist/esm/hooks/index.js +1 -4
- package/dist/esm/index.js +12 -11
- package/dist/esm/locale/en.js +1 -4
- package/dist/esm/locale/index.js +5 -5
- package/dist/esm/locale/zh.js +1 -4
- package/dist/esm/log/error.js +1 -4
- package/dist/esm/log/multiTasksLog.js +32 -18
- package/dist/esm/log/time.js +7 -8
- package/dist/esm/log/utils.js +1 -4
- package/dist/esm/package/index.js +21 -8
- package/dist/esm/parse-config/index.js +11 -14
- package/dist/esm/parse-config/monorepo.js +20 -27
- package/dist/esm/projects/checkProjectChange.js +19 -23
- package/dist/esm/projects/clearMemoryFiles.js +3 -13
- package/dist/esm/projects/getProjects.js +21 -45
- package/dist/esm/projects/getProjectsByPackagesConfig.js +29 -33
- package/dist/esm/projects/getProjectsByWorkspaceFile.js +21 -41
- package/dist/esm/type.js +1 -0
- package/dist/esm/utils/install.js +12 -8
- package/dist/esm/utils/types.js +1 -0
- package/package.json +16 -12
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as path from "path";
|
|
2
2
|
import { logger } from "@modern-js/utils";
|
|
3
3
|
import { FileSystem } from "@rushstack/node-core-library";
|
|
4
|
-
const defaultRemoveDirs = [
|
|
5
|
-
|
|
4
|
+
export const defaultRemoveDirs = [
|
|
5
|
+
"node_modules"
|
|
6
|
+
];
|
|
7
|
+
export const runClearTask = (projectNames, projects, config) => {
|
|
6
8
|
const { removeDirs = defaultRemoveDirs, rootPath } = config;
|
|
7
9
|
if (projectNames.length > 0) {
|
|
8
10
|
projects.forEach((project) => {
|
|
@@ -29,7 +31,3 @@ const runClearTask = (projectNames, projects, config) => {
|
|
|
29
31
|
});
|
|
30
32
|
}
|
|
31
33
|
};
|
|
32
|
-
export {
|
|
33
|
-
defaultRemoveDirs,
|
|
34
|
-
runClearTask
|
|
35
|
-
};
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import * as path from "path";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
JsonFile
|
|
5
|
-
} from "@rushstack/node-core-library";
|
|
6
|
-
import {
|
|
7
|
-
fs,
|
|
8
|
-
yaml,
|
|
9
|
-
execa,
|
|
10
|
-
logger,
|
|
11
|
-
chalk,
|
|
12
|
-
getPnpmVersion
|
|
13
|
-
} from "@modern-js/utils";
|
|
2
|
+
import { FileSystem, JsonFile } from "@rushstack/node-core-library";
|
|
3
|
+
import { fs, yaml, execa, logger, chalk, getPnpmVersion } from "@modern-js/utils";
|
|
14
4
|
import { WORKSPACE_FILE } from "../../constants";
|
|
15
5
|
const createCopyMap = (rootPath, targetProject, copyProjects, deployDir) => {
|
|
16
6
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -34,12 +24,10 @@ const createCopyFromMonorepoToDeployDirFn = (monorepoDir, deployDir) => (filenam
|
|
|
34
24
|
}
|
|
35
25
|
};
|
|
36
26
|
const checkAndUpdatePMWorkspaces = (deployDir) => {
|
|
37
|
-
var
|
|
27
|
+
var _pkg_workspaces;
|
|
38
28
|
const pnpmWp = path.join(deployDir, WORKSPACE_FILE.PNPM);
|
|
39
29
|
if (fs.existsSync(pnpmWp)) {
|
|
40
|
-
const pnpmWorkspace = yaml.load(
|
|
41
|
-
fs.readFileSync(pnpmWp, "utf-8")
|
|
42
|
-
);
|
|
30
|
+
const pnpmWorkspace = yaml.load(fs.readFileSync(pnpmWp, "utf-8"));
|
|
43
31
|
if (pnpmWorkspace.packages && Array.isArray(pnpmWorkspace.packages)) {
|
|
44
32
|
pnpmWorkspace.packages.push("apps/**");
|
|
45
33
|
}
|
|
@@ -47,7 +35,7 @@ const checkAndUpdatePMWorkspaces = (deployDir) => {
|
|
|
47
35
|
}
|
|
48
36
|
const pkgPath = path.join(deployDir, WORKSPACE_FILE.YARN);
|
|
49
37
|
const pkg = JsonFile.load(pkgPath);
|
|
50
|
-
if (((
|
|
38
|
+
if (((_pkg_workspaces = pkg.workspaces) === null || _pkg_workspaces === void 0 ? void 0 : _pkg_workspaces.packages) && Array.isArray(pkg.workspaces.packages)) {
|
|
51
39
|
pkg.workspaces.packages.push("app/**");
|
|
52
40
|
}
|
|
53
41
|
};
|
|
@@ -66,60 +54,82 @@ const generatorAndCopyRequiredFiles = (rootPath, deployDir) => {
|
|
|
66
54
|
checkAndUpdatePMWorkspaces(deployDir);
|
|
67
55
|
};
|
|
68
56
|
const checkAndRunDeployCommand = async (monorepoPath, targetProject, packageManager) => {
|
|
69
|
-
var
|
|
70
|
-
const scripts = ((
|
|
57
|
+
var _targetProject_extra;
|
|
58
|
+
const scripts = ((_targetProject_extra = targetProject.extra) === null || _targetProject_extra === void 0 ? void 0 : _targetProject_extra.scripts) || {};
|
|
71
59
|
if (scripts.deploy) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
60
|
+
var _childProcess_stdout, _childProcess_stderr;
|
|
61
|
+
logger.info(`The 'deploy' command for the ${targetProject.name} is detected, so 'deploy' will be executed`);
|
|
62
|
+
let runDeployCommands = [
|
|
63
|
+
"run",
|
|
64
|
+
"deploy"
|
|
65
|
+
];
|
|
76
66
|
if (packageManager === "pnpm") {
|
|
77
67
|
const pnpmVersion = await getPnpmVersion();
|
|
78
68
|
if (pnpmVersion.startsWith("6")) {
|
|
79
|
-
runDeployCommands = [
|
|
69
|
+
runDeployCommands = [
|
|
70
|
+
"run",
|
|
71
|
+
"deploy",
|
|
72
|
+
"--filter",
|
|
73
|
+
targetProject.name
|
|
74
|
+
];
|
|
80
75
|
} else {
|
|
81
|
-
runDeployCommands = [
|
|
76
|
+
runDeployCommands = [
|
|
77
|
+
"run",
|
|
78
|
+
"--filter",
|
|
79
|
+
targetProject.name,
|
|
80
|
+
"deploy"
|
|
81
|
+
];
|
|
82
82
|
}
|
|
83
83
|
} else if (packageManager === "yarn") {
|
|
84
|
-
runDeployCommands = [
|
|
84
|
+
runDeployCommands = [
|
|
85
|
+
"workspace",
|
|
86
|
+
targetProject.name,
|
|
87
|
+
"run",
|
|
88
|
+
"deploy"
|
|
89
|
+
];
|
|
85
90
|
}
|
|
86
91
|
const cwd = packageManager === "npm" ? targetProject.extra.path : monorepoPath;
|
|
87
92
|
const childProcess = execa(packageManager, runDeployCommands, {
|
|
88
93
|
cwd,
|
|
89
|
-
stdio: [
|
|
94
|
+
stdio: [
|
|
95
|
+
"pipe"
|
|
96
|
+
]
|
|
90
97
|
});
|
|
91
|
-
(
|
|
92
|
-
(
|
|
98
|
+
(_childProcess_stdout = childProcess.stdout) === null || _childProcess_stdout === void 0 ? void 0 : _childProcess_stdout.pipe(process.stdout);
|
|
99
|
+
(_childProcess_stderr = childProcess.stderr) === null || _childProcess_stderr === void 0 ? void 0 : _childProcess_stderr.pipe(process.stderr);
|
|
93
100
|
await childProcess;
|
|
94
101
|
}
|
|
95
102
|
};
|
|
96
103
|
const installDependency = async (deployDir, packageManager) => {
|
|
97
104
|
const packageJsonPath = path.join(deployDir, "package.json");
|
|
98
105
|
const packageJson = JsonFile.load(packageJsonPath);
|
|
99
|
-
const scripts = (packageJson
|
|
106
|
+
const scripts = (packageJson === null || packageJson === void 0 ? void 0 : packageJson.scripts) || {};
|
|
100
107
|
let commands = [];
|
|
101
108
|
if (scripts.setup) {
|
|
102
|
-
logger.info(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
109
|
+
logger.info(`The 'setup' command is detected, execute '${packageManager} run setup' to start installing the dependencies`);
|
|
110
|
+
commands = [
|
|
111
|
+
"run",
|
|
112
|
+
"setup"
|
|
113
|
+
];
|
|
106
114
|
} else {
|
|
107
|
-
logger.info(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
logger.info(`No 'setup' command detected, execute '${packageManager} install' to start installing dependencies`);
|
|
116
|
+
commands = [
|
|
117
|
+
"install"
|
|
118
|
+
];
|
|
111
119
|
}
|
|
112
120
|
logger.log(chalk.rgb(218, 152, 92)("Install Log:\n"));
|
|
113
121
|
const childProcess = execa(packageManager, commands, {
|
|
114
122
|
stdio: "inherit",
|
|
115
123
|
cwd: deployDir,
|
|
116
|
-
env: {
|
|
124
|
+
env: {
|
|
125
|
+
NODE_ENV: void 0
|
|
126
|
+
}
|
|
117
127
|
});
|
|
118
128
|
await childProcess;
|
|
119
129
|
};
|
|
120
130
|
const excludeDirs = (filePath, dirs) => dirs.some((dir) => filePath.includes(dir));
|
|
121
131
|
const defaultDeployPath = "output";
|
|
122
|
-
const deploy = async (deployProjectNames, operator, config) => {
|
|
132
|
+
export const deploy = async (deployProjectNames, operator, config) => {
|
|
123
133
|
const { rootPath, packageManager, deployPath = defaultDeployPath } = config;
|
|
124
134
|
const realDeployPath = path.isAbsolute(deployPath) ? deployPath : path.join(rootPath, deployPath);
|
|
125
135
|
FileSystem.deleteFolder(realDeployPath);
|
|
@@ -128,12 +138,7 @@ const deploy = async (deployProjectNames, operator, config) => {
|
|
|
128
138
|
checkExist: true
|
|
129
139
|
});
|
|
130
140
|
const alldeps = operator.getNodeAllDependencyData(deployProjectName);
|
|
131
|
-
const copyMap = createCopyMap(
|
|
132
|
-
rootPath,
|
|
133
|
-
currentProject,
|
|
134
|
-
alldeps,
|
|
135
|
-
realDeployPath
|
|
136
|
-
);
|
|
141
|
+
const copyMap = createCopyMap(rootPath, currentProject, alldeps, realDeployPath);
|
|
137
142
|
await checkAndRunDeployCommand(rootPath, currentProject, packageManager);
|
|
138
143
|
FileSystem.ensureFolder(realDeployPath);
|
|
139
144
|
for (const [from, to] of copyMap) {
|
|
@@ -143,7 +148,10 @@ const deploy = async (deployProjectNames, operator, config) => {
|
|
|
143
148
|
// If true, then when copying symlinks, copy the target object instead of copying the link.
|
|
144
149
|
dereferenceSymlinks: false,
|
|
145
150
|
filter(filePath) {
|
|
146
|
-
if (excludeDirs(filePath, [
|
|
151
|
+
if (excludeDirs(filePath, [
|
|
152
|
+
"node_modules",
|
|
153
|
+
"dist"
|
|
154
|
+
])) {
|
|
147
155
|
return false;
|
|
148
156
|
}
|
|
149
157
|
return true;
|
|
@@ -154,6 +162,3 @@ const deploy = async (deployProjectNames, operator, config) => {
|
|
|
154
162
|
generatorAndCopyRequiredFiles(rootPath, realDeployPath);
|
|
155
163
|
logger.success(`Deploy success. The deploy dir is in '${rootPath}/output'`);
|
|
156
164
|
};
|
|
157
|
-
export {
|
|
158
|
-
deploy
|
|
159
|
-
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const defaultBuildWatchCmds = [
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export const defaultBuildWatchCmds = [
|
|
2
|
+
"dev",
|
|
3
|
+
"build"
|
|
4
|
+
];
|
|
@@ -5,17 +5,23 @@ import { defaultBuildWatchCmds } from "./cmds";
|
|
|
5
5
|
const getFinalTaskCmds = (taskCmds, project) => {
|
|
6
6
|
let finalTaskCmds = [];
|
|
7
7
|
if (taskCmds.length === 1) {
|
|
8
|
-
finalTaskCmds = [
|
|
8
|
+
finalTaskCmds = [
|
|
9
|
+
taskCmds[0]
|
|
10
|
+
];
|
|
9
11
|
} else if (taskCmds.length === 2 && typeof taskCmds[0] === "string" && typeof taskCmds[1] === "string") {
|
|
10
|
-
finalTaskCmds = [
|
|
12
|
+
finalTaskCmds = [
|
|
13
|
+
taskCmds[1]
|
|
14
|
+
];
|
|
11
15
|
} else if (taskCmds.length === 2 && typeof taskCmds[0] === "string" && typeof taskCmds[1] === "function") {
|
|
12
16
|
finalTaskCmds = taskCmds[1](project);
|
|
13
17
|
} else {
|
|
14
|
-
finalTaskCmds = [
|
|
18
|
+
finalTaskCmds = [
|
|
19
|
+
"build"
|
|
20
|
+
];
|
|
15
21
|
}
|
|
16
22
|
return finalTaskCmds;
|
|
17
23
|
};
|
|
18
|
-
const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
|
|
24
|
+
export const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
|
|
19
25
|
const { packageManager } = config;
|
|
20
26
|
const timelogInstance = timeLog.initTimeLog();
|
|
21
27
|
const task = async (project) => {
|
|
@@ -26,14 +32,22 @@ const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLo
|
|
|
26
32
|
const prefix = `run ${project.name} ${taskCmd} script`;
|
|
27
33
|
timeLog.startTime(timelogInstance, prefix);
|
|
28
34
|
try {
|
|
29
|
-
const childProcess = execa(packageManager, [
|
|
35
|
+
const childProcess = execa(packageManager, [
|
|
36
|
+
taskCmd
|
|
37
|
+
], {
|
|
30
38
|
cwd: project.extra.path,
|
|
31
|
-
stdio: [
|
|
39
|
+
stdio: [
|
|
40
|
+
"pipe",
|
|
41
|
+
"pipe",
|
|
42
|
+
"pipe"
|
|
43
|
+
]
|
|
32
44
|
});
|
|
33
45
|
taskLogger.addLogProvider(project.name, {
|
|
34
46
|
stdout: childProcess.stdout,
|
|
35
47
|
stderr: childProcess.stderr,
|
|
36
|
-
logConfig: {
|
|
48
|
+
logConfig: {
|
|
49
|
+
label: "WATCH: "
|
|
50
|
+
}
|
|
37
51
|
});
|
|
38
52
|
await childProcess;
|
|
39
53
|
} catch (e) {
|
|
@@ -47,15 +61,19 @@ const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLo
|
|
|
47
61
|
};
|
|
48
62
|
return task;
|
|
49
63
|
};
|
|
50
|
-
const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
|
|
64
|
+
export const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
|
|
51
65
|
const { packageManager } = config;
|
|
52
66
|
const task = async (project) => {
|
|
53
|
-
const devCmds = [
|
|
67
|
+
const devCmds = [
|
|
68
|
+
taskCmds[0]
|
|
69
|
+
];
|
|
54
70
|
const cmd = project.extra.scripts || {};
|
|
55
71
|
for (const taskCmd of devCmds) {
|
|
56
72
|
if (cmd[taskCmd]) {
|
|
57
73
|
try {
|
|
58
|
-
const childProcess = execa(packageManager, [
|
|
74
|
+
const childProcess = execa(packageManager, [
|
|
75
|
+
taskCmd
|
|
76
|
+
], {
|
|
59
77
|
cwd: project.extra.path,
|
|
60
78
|
stdio: "pipe",
|
|
61
79
|
all: true
|
|
@@ -63,7 +81,9 @@ const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) =>
|
|
|
63
81
|
taskLogger.addLogProvider(project.name, {
|
|
64
82
|
stdout: childProcess.stdout,
|
|
65
83
|
stderr: childProcess.stderr,
|
|
66
|
-
logConfig: {
|
|
84
|
+
logConfig: {
|
|
85
|
+
label: `${taskCmd.toUpperCase()}: `
|
|
86
|
+
}
|
|
67
87
|
});
|
|
68
88
|
const ret = await childProcess;
|
|
69
89
|
console.info(ret);
|
|
@@ -77,7 +97,3 @@ const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) =>
|
|
|
77
97
|
};
|
|
78
98
|
return task;
|
|
79
99
|
};
|
|
80
|
-
export {
|
|
81
|
-
createDependenciesTask,
|
|
82
|
-
createDevTask
|
|
83
|
-
};
|
|
@@ -14,7 +14,7 @@ const getIgnored = (config) => (watchFilePath) => {
|
|
|
14
14
|
}
|
|
15
15
|
return false;
|
|
16
16
|
};
|
|
17
|
-
const runBuildWatchTask = async (projectName, operator, config, taskCmds = defaultBuildWatchCmds) => {
|
|
17
|
+
export const runBuildWatchTask = async (projectName, operator, config, taskCmds = defaultBuildWatchCmds) => {
|
|
18
18
|
const { needInit = true } = config;
|
|
19
19
|
const taskLogger = new MultitasksLogger();
|
|
20
20
|
const dependenciesTask = createDependenciesTask(config, taskCmds, taskLogger);
|
|
@@ -32,12 +32,9 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
|
|
|
32
32
|
});
|
|
33
33
|
watcher.add(watchedProjectState.getWatchedProjectsPath());
|
|
34
34
|
if (needInit) {
|
|
35
|
-
await operator.traverseDependenciesToProject(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await dependenciesTask(currentProject);
|
|
39
|
-
}
|
|
40
|
-
);
|
|
35
|
+
await operator.traverseDependenciesToProject(projectName, async (currentProject) => {
|
|
36
|
+
await dependenciesTask(currentProject);
|
|
37
|
+
});
|
|
41
38
|
}
|
|
42
39
|
await new Promise((resolve) => {
|
|
43
40
|
console.info("start watch");
|
|
@@ -47,22 +44,18 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
|
|
|
47
44
|
}
|
|
48
45
|
const changedProject = watchedProjectState.getChangedProject(changeFilePath);
|
|
49
46
|
if (changedProject) {
|
|
50
|
-
await operator.traverseProjectToDependent(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{ withSelf: true }
|
|
65
|
-
);
|
|
47
|
+
await operator.traverseProjectToDependent(changedProject.name, async (currentProject, _, earlyFinish) => {
|
|
48
|
+
if (currentProject.name === projectName) {
|
|
49
|
+
earlyFinish();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (watchedProjectState.watchProjectsName.includes(currentProject.name)) {
|
|
53
|
+
console.info("run build", currentProject.name);
|
|
54
|
+
await dependenciesTask(currentProject);
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
withSelf: true
|
|
58
|
+
});
|
|
66
59
|
resolve(null);
|
|
67
60
|
} else {
|
|
68
61
|
console.info("changed is not in monorepo manager");
|
|
@@ -70,8 +63,7 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
|
|
|
70
63
|
});
|
|
71
64
|
resolve(null);
|
|
72
65
|
});
|
|
73
|
-
await devTask(operator.getNodeData(projectName, {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
runBuildWatchTask
|
|
66
|
+
await devTask(operator.getNodeData(projectName, {
|
|
67
|
+
checkExist: true
|
|
68
|
+
}));
|
|
77
69
|
};
|
|
@@ -1,37 +1,41 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
1
14
|
import * as path from "path";
|
|
2
15
|
import { globby } from "@modern-js/utils";
|
|
3
|
-
class WatchedProjectsState {
|
|
4
|
-
constructor(fromNodes, config) {
|
|
5
|
-
this._fromNodes = fromNodes;
|
|
6
|
-
this._config = config;
|
|
7
|
-
this._projectsFileMap = /* @__PURE__ */ new Map();
|
|
8
|
-
this._watchProjects = {};
|
|
9
|
-
this._initState();
|
|
10
|
-
}
|
|
16
|
+
export class WatchedProjectsState {
|
|
11
17
|
_initState() {
|
|
12
18
|
const globOption = {
|
|
13
19
|
cwd: this._config.rootPath,
|
|
14
20
|
absolute: true,
|
|
15
21
|
expandDirectories: false,
|
|
16
22
|
followSymbolicLinks: false,
|
|
17
|
-
ignore: [
|
|
23
|
+
ignore: [
|
|
24
|
+
"**/node_modules/**",
|
|
25
|
+
".project-memory/**",
|
|
26
|
+
"dist/**"
|
|
27
|
+
]
|
|
18
28
|
};
|
|
19
|
-
this._watchProjects = this._fromNodes.reduce(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
...ret,
|
|
30
|
-
[node.extra.path]: node
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
{}
|
|
34
|
-
);
|
|
29
|
+
this._watchProjects = this._fromNodes.reduce((ret, node) => {
|
|
30
|
+
const files = globby.sync(`${node.extra.path}/**`, globOption);
|
|
31
|
+
for (const filePath of files) {
|
|
32
|
+
this._projectsFileMap.set(path.relative(this._config.rootPath, filePath), node.extra.path);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
...ret,
|
|
36
|
+
[node.extra.path]: node
|
|
37
|
+
};
|
|
38
|
+
}, {});
|
|
35
39
|
}
|
|
36
40
|
getChangedProject(changedFilPath) {
|
|
37
41
|
if (this._projectsFileMap.has(changedFilPath)) {
|
|
@@ -50,11 +54,17 @@ class WatchedProjectsState {
|
|
|
50
54
|
return this._watchProjects;
|
|
51
55
|
}
|
|
52
56
|
get watchProjectsName() {
|
|
53
|
-
return Object.keys(this._watchProjects).map(
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
return Object.keys(this._watchProjects).map((projectPath) => this._watchProjects[projectPath].name);
|
|
58
|
+
}
|
|
59
|
+
constructor(fromNodes, config) {
|
|
60
|
+
_define_property(this, "_config", void 0);
|
|
61
|
+
_define_property(this, "_fromNodes", void 0);
|
|
62
|
+
_define_property(this, "_watchProjects", void 0);
|
|
63
|
+
_define_property(this, "_projectsFileMap", void 0);
|
|
64
|
+
this._fromNodes = fromNodes;
|
|
65
|
+
this._config = config;
|
|
66
|
+
this._projectsFileMap = /* @__PURE__ */ new Map();
|
|
67
|
+
this._watchProjects = {};
|
|
68
|
+
this._initState();
|
|
56
69
|
}
|
|
57
70
|
}
|
|
58
|
-
export {
|
|
59
|
-
WatchedProjectsState
|
|
60
|
-
};
|
|
@@ -3,27 +3,23 @@ import { fs, yaml } from "@modern-js/utils";
|
|
|
3
3
|
import { JsonFile } from "@rushstack/node-core-library";
|
|
4
4
|
import { WORKSPACE_FILE } from "../../constants";
|
|
5
5
|
import { installByPackageManager } from "../../utils/install";
|
|
6
|
-
const replaceWorkspaces = ({
|
|
7
|
-
rootPath,
|
|
8
|
-
projectsInWorkspaces
|
|
9
|
-
}) => {
|
|
10
|
-
var _a;
|
|
6
|
+
const replaceWorkspaces = ({ rootPath, projectsInWorkspaces }) => {
|
|
11
7
|
const pnpmWsFilePath = path.join(rootPath, WORKSPACE_FILE.PNPM);
|
|
12
8
|
if (fs.existsSync(pnpmWsFilePath)) {
|
|
13
9
|
const pnpmWorkspace = fs.readFileSync(pnpmWsFilePath, "utf-8");
|
|
14
10
|
const originalPnpmWorkspaces = yaml.load(pnpmWorkspace);
|
|
15
|
-
fs.writeFileSync(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
);
|
|
11
|
+
fs.writeFileSync(pnpmWsFilePath, yaml.dump({
|
|
12
|
+
packages: projectsInWorkspaces
|
|
13
|
+
}));
|
|
19
14
|
return () => {
|
|
20
15
|
yaml.dump(originalPnpmWorkspaces);
|
|
21
16
|
};
|
|
22
17
|
}
|
|
23
18
|
const pkgFilePath = path.join(rootPath, WORKSPACE_FILE.YARN);
|
|
24
19
|
if (fs.existsSync(pkgFilePath)) {
|
|
20
|
+
var _pkg_workspaces;
|
|
25
21
|
const pkg = JsonFile.load(pkgFilePath);
|
|
26
|
-
if (
|
|
22
|
+
if (pkg === null || pkg === void 0 ? void 0 : (_pkg_workspaces = pkg.workspaces) === null || _pkg_workspaces === void 0 ? void 0 : _pkg_workspaces.packages) {
|
|
27
23
|
const originalPkg = pkg;
|
|
28
24
|
pkg.workspaces.packages = projectsInWorkspaces;
|
|
29
25
|
JsonFile.save(pkg, pkgFilePath);
|
|
@@ -34,7 +30,7 @@ const replaceWorkspaces = ({
|
|
|
34
30
|
}
|
|
35
31
|
return false;
|
|
36
32
|
};
|
|
37
|
-
const runInstallTask = async (projectNames, operator, config) => {
|
|
33
|
+
export const runInstallTask = async (projectNames, operator, config) => {
|
|
38
34
|
const { rootPath, packageManager } = config;
|
|
39
35
|
let projectsInWorkspaces = [];
|
|
40
36
|
if (projectNames.length === 0) {
|
|
@@ -54,11 +50,11 @@ const runInstallTask = async (projectNames, operator, config) => {
|
|
|
54
50
|
rootPath,
|
|
55
51
|
projectsInWorkspaces: noDupProjectList
|
|
56
52
|
});
|
|
57
|
-
await installByPackageManager(packageManager, {
|
|
53
|
+
await installByPackageManager(packageManager, {
|
|
54
|
+
rootPath,
|
|
55
|
+
removeLock: true
|
|
56
|
+
});
|
|
58
57
|
if (restorWorkspace) {
|
|
59
58
|
restorWorkspace();
|
|
60
59
|
}
|
|
61
60
|
};
|
|
62
|
-
export {
|
|
63
|
-
runInstallTask
|
|
64
|
-
};
|
package/dist/esm/hooks/index.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -5,17 +5,19 @@ import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
|
|
|
5
5
|
import { i18n } from "./locale";
|
|
6
6
|
import { newCli, deployCli, clearCli } from "./cli";
|
|
7
7
|
import { hooks } from "./hooks";
|
|
8
|
-
const upgradeModel = Import.lazy(
|
|
9
|
-
|
|
10
|
-
require
|
|
11
|
-
);
|
|
12
|
-
var src_default = () => ({
|
|
8
|
+
const upgradeModel = Import.lazy("@modern-js/upgrade", require);
|
|
9
|
+
export default () => ({
|
|
13
10
|
name: "@modern-js/monorepo-tools",
|
|
14
|
-
usePlugins: [
|
|
11
|
+
usePlugins: [
|
|
12
|
+
changesetPlugin(),
|
|
13
|
+
lintPlugin()
|
|
14
|
+
],
|
|
15
15
|
registerHook: hooks,
|
|
16
16
|
setup: (api) => {
|
|
17
17
|
const locale = getLocaleLanguage();
|
|
18
|
-
i18n.changeLanguage({
|
|
18
|
+
i18n.changeLanguage({
|
|
19
|
+
locale
|
|
20
|
+
});
|
|
19
21
|
return {
|
|
20
22
|
commands({ program }) {
|
|
21
23
|
clearCli(program, api);
|
|
@@ -25,8 +27,7 @@ var src_default = () => ({
|
|
|
25
27
|
}
|
|
26
28
|
};
|
|
27
29
|
},
|
|
28
|
-
post: [
|
|
30
|
+
post: [
|
|
31
|
+
"@modern-js/plugin-changeset"
|
|
32
|
+
]
|
|
29
33
|
});
|
|
30
|
-
export {
|
|
31
|
-
src_default as default
|
|
32
|
-
};
|
package/dist/esm/locale/en.js
CHANGED
package/dist/esm/locale/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { I18n } from "@modern-js/plugin-i18n";
|
|
|
2
2
|
import { ZH_LOCALE } from "./zh";
|
|
3
3
|
import { EN_LOCALE } from "./en";
|
|
4
4
|
const i18n = new I18n();
|
|
5
|
-
const localeKeys = i18n.init("en", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
5
|
+
const localeKeys = i18n.init("en", {
|
|
6
|
+
zh: ZH_LOCALE,
|
|
7
|
+
en: EN_LOCALE
|
|
8
|
+
});
|
|
9
|
+
export { i18n, localeKeys };
|
package/dist/esm/locale/zh.js
CHANGED