@teambit/generator 0.0.592 → 0.0.596
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/dist/component-generator.d.ts +2 -0
- package/dist/component-generator.js +55 -2
- package/dist/component-generator.js.map +1 -1
- package/dist/component-template.d.ts +11 -0
- package/dist/create.cmd.d.ts +1 -0
- package/dist/create.cmd.js +2 -2
- package/dist/create.cmd.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/templates/component-generator/index.js +6 -0
- package/dist/templates/component-generator/index.js.map +1 -1
- package/dist/templates/workspace-generator/index.js +6 -0
- package/dist/templates/workspace-generator/index.js.map +1 -1
- package/dist/workspace-generator.js +1 -1
- package/dist/workspace-generator.js.map +1 -1
- package/package-tar/teambit-generator-0.0.596.tgz +0 -0
- package/package.json +20 -20
- package/templates/component-generator/index.ts +6 -0
- package/templates/workspace-generator/index.ts +6 -0
- package/package-tar/teambit-generator-0.0.592.tgz +0 -0
|
@@ -19,6 +19,8 @@ export declare class ComponentGenerator {
|
|
|
19
19
|
generate(): Promise<GenerateResult[]>;
|
|
20
20
|
private deleteGeneratedComponents;
|
|
21
21
|
private generateOneComponent;
|
|
22
|
+
private addEnvIfProvidedByUser;
|
|
23
|
+
private removeOtherEnvs;
|
|
22
24
|
/**
|
|
23
25
|
* writes the generated template files to the default directory set in the workspace config
|
|
24
26
|
*/
|
|
@@ -51,6 +51,16 @@ function _path() {
|
|
|
51
51
|
return data;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
function _envs() {
|
|
55
|
+
const data = _interopRequireDefault(require("@teambit/envs"));
|
|
56
|
+
|
|
57
|
+
_envs = function () {
|
|
58
|
+
return data;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
|
|
54
64
|
function _camelcase() {
|
|
55
65
|
const data = _interopRequireDefault(require("camelcase"));
|
|
56
66
|
|
|
@@ -131,7 +141,7 @@ class ComponentGenerator {
|
|
|
131
141
|
throw err;
|
|
132
142
|
}
|
|
133
143
|
});
|
|
134
|
-
await this.workspace.
|
|
144
|
+
await this.workspace.bitMap.write();
|
|
135
145
|
return generateResults;
|
|
136
146
|
}
|
|
137
147
|
|
|
@@ -163,15 +173,18 @@ class ComponentGenerator {
|
|
|
163
173
|
componentId
|
|
164
174
|
});
|
|
165
175
|
const mainFile = files.find(file => file.isMain);
|
|
176
|
+
const config = this.addEnvIfProvidedByUser(this.template.config);
|
|
166
177
|
await this.writeComponentFiles(componentPath, files);
|
|
167
178
|
const addResults = await this.workspace.track({
|
|
168
179
|
rootDir: componentPath,
|
|
169
180
|
mainFile: mainFile === null || mainFile === void 0 ? void 0 : mainFile.relativePath,
|
|
170
181
|
componentName: componentId.fullName,
|
|
171
|
-
defaultScope: this.options.scope
|
|
182
|
+
defaultScope: this.options.scope,
|
|
183
|
+
config
|
|
172
184
|
});
|
|
173
185
|
const component = await this.workspace.get(componentId);
|
|
174
186
|
const env = this.envs.getEnv(component);
|
|
187
|
+
await this.removeOtherEnvs(component, env, config);
|
|
175
188
|
return {
|
|
176
189
|
id: componentId,
|
|
177
190
|
dir: componentPath,
|
|
@@ -179,6 +192,46 @@ class ComponentGenerator {
|
|
|
179
192
|
envId: env.id
|
|
180
193
|
};
|
|
181
194
|
}
|
|
195
|
+
|
|
196
|
+
addEnvIfProvidedByUser(config) {
|
|
197
|
+
var _config, _config$EnvsAspect$id;
|
|
198
|
+
|
|
199
|
+
const userEnv = this.options.env; // env entered by the user when running `bit create --env`
|
|
200
|
+
|
|
201
|
+
const templateEnv = (_config = config) === null || _config === void 0 ? void 0 : (_config$EnvsAspect$id = _config[_envs().default.id]) === null || _config$EnvsAspect$id === void 0 ? void 0 : _config$EnvsAspect$id.env;
|
|
202
|
+
|
|
203
|
+
if (!userEnv || userEnv === templateEnv) {
|
|
204
|
+
return config;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
config = config || {};
|
|
208
|
+
|
|
209
|
+
if (templateEnv) {
|
|
210
|
+
// the component template has an env and the user wants a different env.
|
|
211
|
+
delete config[templateEnv];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
config[userEnv] = {};
|
|
215
|
+
config[_envs().default.id] = config[_envs().default.id] || {};
|
|
216
|
+
config[_envs().default.id].env = userEnv;
|
|
217
|
+
return config;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
async removeOtherEnvs(component, env, config) {
|
|
221
|
+
var _config$EnvsAspect$id2;
|
|
222
|
+
|
|
223
|
+
const envFromTemplate = config === null || config === void 0 ? void 0 : (_config$EnvsAspect$id2 = config[_envs().default.id]) === null || _config$EnvsAspect$id2 === void 0 ? void 0 : _config$EnvsAspect$id2.env;
|
|
224
|
+
|
|
225
|
+
if (!envFromTemplate) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const envsNotFromConfig = this.envs.getEnvsNotFromEnvsConfig(component).map(envDef => envDef.id);
|
|
230
|
+
const envsToRemove = envsNotFromConfig.filter(envId => envId !== envFromTemplate);
|
|
231
|
+
envsToRemove.forEach(envId => config[envId] = '-');
|
|
232
|
+
const bitMapRecord = this.workspace.bitMap.getBitmapEntry(component.id);
|
|
233
|
+
bitMapRecord.config = config;
|
|
234
|
+
}
|
|
182
235
|
/**
|
|
183
236
|
* writes the generated template files to the default directory set in the workspace config
|
|
184
237
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component-generator.ts"],"names":["ComponentGenerator","constructor","workspace","componentIds","options","template","envs","generate","dirsToDeleteIfFailed","generateResults","componentId","componentPath","getComponentPath","fs","existsSync","path","join","BitError","hasName","fullName","push","generateOneComponent","err","deleteGeneratedComponents","writeBitMap","dirs","Promise","all","map","dir","absoluteDir","remove","code","name","namePascalCase","pascalCase","nameCamelCase","files","generateFiles","mainFile","find","file","isMain","writeComponentFiles","addResults","track","rootDir","relativePath","componentName","defaultScope","scope","component","get","env","getEnv","id","envId","templateFiles","dataToPersist","DataToPersist","vinylFiles","templateFile","templateFileVinyl","Vinyl","base","contents","Buffer","from","content","AbstractVinyl","fromVinyl","results","v","addManyFiles","addBasePath","persistAllToFS","_legacy","changeScope","defaultDirectory"],"mappings":"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","sourcesContent":["import Vinyl from 'vinyl';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport { EnvsMain } from '@teambit/envs';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { PathOsBasedRelative } from '@teambit/legacy/dist/utils/path';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport { composeComponentPath } from '@teambit/legacy/dist/utils/bit/compose-component-path';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentTemplate, ComponentFile } from './component-template';\nimport { CreateOptions } from './create.cmd';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: CreateOptions,\n private template: ComponentTemplate,\n private envs: EnvsMain\n ) {}\n\n async generate(): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.getComponentPath(componentId);\n if (fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(`unable to create a component at \"${componentPath}\", this path already exist`);\n }\n if (await this.workspace.hasName(componentId.fullName)) {\n throw new BitError(\n `unable to create a component \"${componentId.fullName}\", a component with the same name already exist`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.writeBitMap();\n\n return generateResults;\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const files = this.template.generateFiles({ name, namePascalCase, nameCamelCase, componentId });\n const mainFile = files.find((file) => file.isMain);\n await this.writeComponentFiles(componentPath, files);\n const addResults = await this.workspace.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n defaultScope: this.options.scope,\n });\n const component = await this.workspace.get(componentId);\n const env = this.envs.getEnv(component);\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n envId: env.id,\n };\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeComponentFiles(\n componentPath: string,\n templateFiles: ComponentFile[]\n ): Promise<PathOsBasedRelative[]> {\n const dataToPersist = new DataToPersist();\n const vinylFiles = templateFiles.map((templateFile) => {\n const templateFileVinyl = new Vinyl({\n base: componentPath,\n path: path.join(componentPath, templateFile.relativePath),\n contents: Buffer.from(templateFile.content),\n });\n return AbstractVinyl.fromVinyl(templateFileVinyl);\n });\n const results = vinylFiles.map((v) => v.path);\n dataToPersist.addManyFiles(vinylFiles);\n dataToPersist.addBasePath(this.workspace.path);\n await dataToPersist.persistAllToFS();\n return results;\n }\n\n private getComponentPath(componentId: ComponentID) {\n if (this.options.path) return this.options.path;\n return composeComponentPath(componentId._legacy.changeScope(componentId.scope), this.workspace.defaultDirectory);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["component-generator.ts"],"names":["ComponentGenerator","constructor","workspace","componentIds","options","template","envs","generate","dirsToDeleteIfFailed","generateResults","componentId","componentPath","getComponentPath","fs","existsSync","path","join","BitError","hasName","fullName","push","generateOneComponent","err","deleteGeneratedComponents","bitMap","write","dirs","Promise","all","map","dir","absoluteDir","remove","code","name","namePascalCase","pascalCase","nameCamelCase","files","generateFiles","mainFile","find","file","isMain","config","addEnvIfProvidedByUser","writeComponentFiles","addResults","track","rootDir","relativePath","componentName","defaultScope","scope","component","get","env","getEnv","removeOtherEnvs","id","envId","userEnv","templateEnv","EnvsAspect","envFromTemplate","envsNotFromConfig","getEnvsNotFromEnvsConfig","envDef","envsToRemove","filter","forEach","bitMapRecord","getBitmapEntry","templateFiles","dataToPersist","DataToPersist","vinylFiles","templateFile","templateFileVinyl","Vinyl","base","contents","Buffer","from","content","AbstractVinyl","fromVinyl","results","v","addManyFiles","addBasePath","persistAllToFS","_legacy","changeScope","defaultDirectory"],"mappings":"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","sourcesContent":["import Vinyl from 'vinyl';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport EnvsAspect, { EnvDefinition, EnvsMain } from '@teambit/envs';\nimport { Component } from '@teambit/component';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { PathOsBasedRelative } from '@teambit/legacy/dist/utils/path';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport { composeComponentPath } from '@teambit/legacy/dist/utils/bit/compose-component-path';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentTemplate, ComponentFile, ComponentConfig } from './component-template';\nimport { CreateOptions } from './create.cmd';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: CreateOptions,\n private template: ComponentTemplate,\n private envs: EnvsMain\n ) {}\n\n async generate(): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.getComponentPath(componentId);\n if (fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(`unable to create a component at \"${componentPath}\", this path already exist`);\n }\n if (await this.workspace.hasName(componentId.fullName)) {\n throw new BitError(\n `unable to create a component \"${componentId.fullName}\", a component with the same name already exist`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.bitMap.write();\n\n return generateResults;\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const files = this.template.generateFiles({ name, namePascalCase, nameCamelCase, componentId });\n const mainFile = files.find((file) => file.isMain);\n const config = this.addEnvIfProvidedByUser(this.template.config);\n await this.writeComponentFiles(componentPath, files);\n const addResults = await this.workspace.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n defaultScope: this.options.scope,\n config,\n });\n const component = await this.workspace.get(componentId);\n const env = this.envs.getEnv(component);\n await this.removeOtherEnvs(component, env, config);\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n envId: env.id,\n };\n }\n\n private addEnvIfProvidedByUser(config?: ComponentConfig): ComponentConfig | undefined {\n const userEnv = this.options.env; // env entered by the user when running `bit create --env`\n const templateEnv = config?.[EnvsAspect.id]?.env;\n if (!userEnv || userEnv === templateEnv) {\n return config;\n }\n config = config || {};\n if (templateEnv) {\n // the component template has an env and the user wants a different env.\n delete config[templateEnv];\n }\n config[userEnv] = {};\n config[EnvsAspect.id] = config[EnvsAspect.id] || {};\n config[EnvsAspect.id].env = userEnv;\n return config;\n }\n\n private async removeOtherEnvs(component: Component, env: EnvDefinition, config?: ComponentConfig) {\n const envFromTemplate = config?.[EnvsAspect.id]?.env;\n if (!envFromTemplate) {\n return;\n }\n const envsNotFromConfig = this.envs.getEnvsNotFromEnvsConfig(component).map((envDef) => envDef.id);\n const envsToRemove = envsNotFromConfig.filter((envId) => envId !== envFromTemplate);\n envsToRemove.forEach((envId) => (config[envId] = '-'));\n const bitMapRecord = this.workspace.bitMap.getBitmapEntry(component.id);\n bitMapRecord.config = config;\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeComponentFiles(\n componentPath: string,\n templateFiles: ComponentFile[]\n ): Promise<PathOsBasedRelative[]> {\n const dataToPersist = new DataToPersist();\n const vinylFiles = templateFiles.map((templateFile) => {\n const templateFileVinyl = new Vinyl({\n base: componentPath,\n path: path.join(componentPath, templateFile.relativePath),\n contents: Buffer.from(templateFile.content),\n });\n return AbstractVinyl.fromVinyl(templateFileVinyl);\n });\n const results = vinylFiles.map((v) => v.path);\n dataToPersist.addManyFiles(vinylFiles);\n dataToPersist.addBasePath(this.workspace.path);\n await dataToPersist.persistAllToFS();\n return results;\n }\n\n private getComponentPath(componentId: ComponentID) {\n if (this.options.path) return this.options.path;\n return composeComponentPath(componentId._legacy.changeScope(componentId.scope), this.workspace.defaultDirectory);\n }\n}\n"]}
|
|
@@ -35,6 +35,9 @@ export interface ComponentContext {
|
|
|
35
35
|
*/
|
|
36
36
|
componentId: ComponentID;
|
|
37
37
|
}
|
|
38
|
+
export declare type ComponentConfig = {
|
|
39
|
+
[aspectName: string]: any;
|
|
40
|
+
};
|
|
38
41
|
export interface ComponentTemplate {
|
|
39
42
|
/**
|
|
40
43
|
* name of the component template. for example: `hook`, `react-component` or `module`.
|
|
@@ -52,4 +55,12 @@ export interface ComponentTemplate {
|
|
|
52
55
|
* template function for generating the file of a certain component.,
|
|
53
56
|
*/
|
|
54
57
|
generateFiles(context: ComponentContext): ComponentFile[];
|
|
58
|
+
/**
|
|
59
|
+
* component config. gets saved in the .bitmap file and it overrides the workspace.jsonc config.
|
|
60
|
+
* for example, you can set the env that will be used for this component as follows:
|
|
61
|
+
* "teambit.envs/envs": {
|
|
62
|
+
* "env": "teambit.harmony/aspect"
|
|
63
|
+
* },
|
|
64
|
+
*/
|
|
65
|
+
config?: ComponentConfig;
|
|
55
66
|
}
|
package/dist/create.cmd.d.ts
CHANGED
package/dist/create.cmd.js
CHANGED
|
@@ -40,7 +40,7 @@ class CreateCmd {
|
|
|
40
40
|
(0, _defineProperty2().default)(this, "alias", '');
|
|
41
41
|
(0, _defineProperty2().default)(this, "loader", true);
|
|
42
42
|
(0, _defineProperty2().default)(this, "group", 'development');
|
|
43
|
-
(0, _defineProperty2().default)(this, "options", [['n', 'namespace <string>', `sets the component's namespace and nested dirs inside the scope`], ['s', 'scope <string>', `sets the component's scope-name. if not entered, the default-scope will be used`], ['a', 'aspect <string>', 'aspect-id of the template. helpful when multiple aspects use the same template name'], ['p', 'path <string>', 'relative path in the workspace. by default the path is `<scope>/<namespace>/<name>`']]);
|
|
43
|
+
(0, _defineProperty2().default)(this, "options", [['n', 'namespace <string>', `sets the component's namespace and nested dirs inside the scope`], ['s', 'scope <string>', `sets the component's scope-name. if not entered, the default-scope will be used`], ['a', 'aspect <string>', 'aspect-id of the template. helpful when multiple aspects use the same template name'], ['p', 'path <string>', 'relative path in the workspace. by default the path is `<scope>/<namespace>/<name>`'], ['e', 'env <string>', "set the component's environment. (overrides the env from variants and the template)"]]);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
async report([templateName, componentNames], options) {
|
|
@@ -52,7 +52,7 @@ class CreateCmd {
|
|
|
52
52
|
env: ${result.envId}
|
|
53
53
|
`;
|
|
54
54
|
}).join('\n');
|
|
55
|
-
const footer = `env configuration is according to workspace variants. learn more at https://harmony-docs.bit.dev/building-with-bit/environments/#configure-environment-for-components`;
|
|
55
|
+
const footer = `env configuration is according to workspace variants, template config or --env flag. learn more at https://harmony-docs.bit.dev/building-with-bit/environments/#configure-environment-for-components`;
|
|
56
56
|
return `${_chalk().default.green(title)}\n\n${componentsData}\n\n${footer}`;
|
|
57
57
|
}
|
|
58
58
|
|
package/dist/create.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["create.cmd.ts"],"names":["CreateCmd","constructor","generator","report","templateName","componentNames","options","results","generateComponentTemplate","title","length","componentsData","map","result","chalk","bold","id","toString","dir","envId","join","footer","green"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;
|
|
1
|
+
{"version":3,"sources":["create.cmd.ts"],"names":["CreateCmd","constructor","generator","report","templateName","componentNames","options","results","generateComponentTemplate","title","length","componentsData","map","result","chalk","bold","id","toString","dir","envId","join","footer","green"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAWO,MAAMA,SAAN,CAAmC;AAexCC,EAAAA,WAAW,CAASC,SAAT,EAAmC;AAAA,SAA1BA,SAA0B,GAA1BA,SAA0B;AAAA,kDAdvC,2CAcuC;AAAA,yDAbhC,wCAagC;AAAA,8DAZ3B,EAY2B;AAAA,mDAXtC,EAWsC;AAAA,oDAVrC,IAUqC;AAAA,mDATtC,aASsC;AAAA,qDARpC,CACR,CAAC,GAAD,EAAM,oBAAN,EAA6B,iEAA7B,CADQ,EAER,CAAC,GAAD,EAAM,gBAAN,EAAyB,iFAAzB,CAFQ,EAGR,CAAC,GAAD,EAAM,iBAAN,EAAyB,qFAAzB,CAHQ,EAIR,CAAC,GAAD,EAAM,eAAN,EAAuB,qFAAvB,CAJQ,EAKR,CAAC,GAAD,EAAM,cAAN,EAAsB,qFAAtB,CALQ,CAQoC;AAAE;;AAEpC,QAANC,MAAM,CAAC,CAACC,YAAD,EAAeC,cAAf,CAAD,EAAqDC,OAArD,EAA6E;AACvF,UAAMC,OAAO,GAAG,MAAM,KAAKL,SAAL,CAAeM,yBAAf,CAAyCH,cAAzC,EAAyDD,YAAzD,EAAuEE,OAAvE,CAAtB;AACA,UAAMG,KAAK,GAAI,GAAEF,OAAO,CAACG,MAAO,4BAAhC;AAEA,UAAMC,cAAc,GAAGJ,OAAO,CAC3BK,GADoB,CACfC,MAAD,IAAY;AACf,aAAQ,GAAEC,iBAAMC,IAAN,CAAWF,MAAM,CAACG,EAAP,CAAUC,QAAV,EAAX,CAAiC;AACnD,gBAAgBJ,MAAM,CAACK,GAAI;AAC3B,gBAAgBL,MAAM,CAACM,KAAM;AAC7B,CAHQ;AAID,KANoB,EAOpBC,IAPoB,CAOf,IAPe,CAAvB;AAQA,UAAMC,MAAM,GAAI,sMAAhB;AAEA,WAAQ,GAAEP,iBAAMQ,KAAN,CAAYb,KAAZ,CAAmB,OAAME,cAAe,OAAMU,MAAO,EAA/D;AACD;;AAhCuC","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { GeneratorMain } from './generator.main.runtime';\n\nexport type CreateOptions = {\n namespace?: string;\n aspect?: string;\n scope?: string;\n path?: string;\n env?: string;\n};\n\nexport class CreateCmd implements Command {\n name = 'create <templateName> <componentNames...>';\n description = 'create a new component from a template';\n shortDescription = '';\n alias = '';\n loader = true;\n group = 'development';\n options = [\n ['n', 'namespace <string>', `sets the component's namespace and nested dirs inside the scope`],\n ['s', 'scope <string>', `sets the component's scope-name. if not entered, the default-scope will be used`],\n ['a', 'aspect <string>', 'aspect-id of the template. helpful when multiple aspects use the same template name'],\n ['p', 'path <string>', 'relative path in the workspace. by default the path is `<scope>/<namespace>/<name>`'],\n ['e', 'env <string>', \"set the component's environment. (overrides the env from variants and the template)\"],\n ] as CommandOptions;\n\n constructor(private generator: GeneratorMain) {}\n\n async report([templateName, componentNames]: [string, string[]], options: CreateOptions) {\n const results = await this.generator.generateComponentTemplate(componentNames, templateName, options);\n const title = `${results.length} component(s) were created`;\n\n const componentsData = results\n .map((result) => {\n return `${chalk.bold(result.id.toString())}\n location: ${result.dir}\n env: ${result.envId}\n`;\n })\n .join('\\n');\n const footer = `env configuration is according to workspace variants, template config or --env flag. learn more at https://harmony-docs.bit.dev/building-with-bit/environments/#configure-environment-for-components`;\n\n return `${chalk.green(title)}\\n\\n${componentsData}\\n\\n${footer}`;\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type { GeneratorMain } from './generator.main.runtime';
|
|
2
|
-
export { ComponentContext, ComponentTemplate, ComponentFile } from './component-template';
|
|
2
|
+
export { ComponentContext, ComponentTemplate, ComponentFile, ComponentConfig } from './component-template';
|
|
3
3
|
export { WorkspaceContext, WorkspaceTemplate, WorkspaceFile } from './workspace-template';
|
|
4
4
|
export { GeneratorAspect } from './generator.aspect';
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "ComponentConfig", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _componentTemplate().ComponentConfig;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "ComponentContext", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export type { GeneratorMain } from './generator.main.runtime';\nexport { ComponentContext, ComponentTemplate, ComponentFile, ComponentConfig } from './component-template';\nexport { WorkspaceContext, WorkspaceTemplate, WorkspaceFile } from './workspace-template';\nexport { GeneratorAspect } from './generator.aspect';\n"]}
|
|
@@ -63,6 +63,12 @@ const componentGeneratorTemplate = {
|
|
|
63
63
|
relativePath: `${context.name}.main.runtime.ts`,
|
|
64
64
|
content: (0, _mainRuntime().mainRuntime)(context)
|
|
65
65
|
}];
|
|
66
|
+
},
|
|
67
|
+
config: {
|
|
68
|
+
'teambit.harmony/aspect': {},
|
|
69
|
+
'teambit.envs/envs': {
|
|
70
|
+
env: 'teambit.harmony/aspect'
|
|
71
|
+
}
|
|
66
72
|
}
|
|
67
73
|
};
|
|
68
74
|
exports.componentGeneratorTemplate = componentGeneratorTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["componentGeneratorTemplate","name","description","generateFiles","context","relativePath","content","isMain"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,qBADqD;AAE3DC,EAAAA,WAAW,EACT,oHAHyD;AAI3DC,EAAAA,aAAa,EAAGC,OAAD,IAA+B;AAC5C,WAAO,CACL;AACEC,MAAAA,YAAY,EAAE,UADhB;AAEEC,MAAAA,OAAO,EAAE,wBAAUF,OAAV,CAFX;AAGEG,MAAAA,MAAM,EAAE;AAHV,KADK,EAML;AACEF,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,YADhC;AAEEK,MAAAA,OAAO,EAAE,8BAAWF,OAAX;AAFX,KANK,EAUL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,WADhC;AAEEK,MAAAA,OAAO,EAAE;AAFX,KAVK,EAcL;AACED,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,kBADhC;AAEEK,MAAAA,OAAO,EAAE,gCAAYF,OAAZ;AAFX,KAdK,CAAP;AAmBD;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["componentGeneratorTemplate","name","description","generateFiles","context","relativePath","content","isMain","config","env"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,qBADqD;AAE3DC,EAAAA,WAAW,EACT,oHAHyD;AAI3DC,EAAAA,aAAa,EAAGC,OAAD,IAA+B;AAC5C,WAAO,CACL;AACEC,MAAAA,YAAY,EAAE,UADhB;AAEEC,MAAAA,OAAO,EAAE,wBAAUF,OAAV,CAFX;AAGEG,MAAAA,MAAM,EAAE;AAHV,KADK,EAML;AACEF,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,YADhC;AAEEK,MAAAA,OAAO,EAAE,8BAAWF,OAAX;AAFX,KANK,EAUL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,WADhC;AAEEK,MAAAA,OAAO,EAAE;AAFX,KAVK,EAcL;AACED,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,kBADhC;AAEEK,MAAAA,OAAO,EAAE,gCAAYF,OAAZ;AAFX,KAdK,CAAP;AAmBD,GAxB0D;AAyB3DI,EAAAA,MAAM,EAAE;AACN,8BAA0B,EADpB;AAEN,yBAAqB;AACnBC,MAAAA,GAAG,EAAE;AADc;AAFf;AAzBmD,CAAtD","sourcesContent":["import { ComponentContext, ComponentTemplate } from '@teambit/generator';\nimport { indexFile } from './files/index';\nimport { aspectFile } from './files/aspect-file';\nimport { docsFile } from './files/docs-file';\nimport { mainRuntime } from './files/main-runtime';\n\nexport const componentGeneratorTemplate: ComponentTemplate = {\n name: 'component-generator',\n description:\n 'create your own component generator \\nDocs: https://harmony-docs.bit.dev/extending-bit/creating-a-custom-generator',\n generateFiles: (context: ComponentContext) => {\n return [\n {\n relativePath: 'index.ts',\n content: indexFile(context),\n isMain: true,\n },\n {\n relativePath: `${context.name}.aspect.ts`,\n content: aspectFile(context),\n },\n {\n relativePath: `${context.name}.docs.mdx`,\n content: docsFile(),\n },\n {\n relativePath: `${context.name}.main.runtime.ts`,\n content: mainRuntime(context),\n },\n ];\n },\n config: {\n 'teambit.harmony/aspect': {},\n 'teambit.envs/envs': {\n env: 'teambit.harmony/aspect',\n },\n },\n};\n"]}
|
|
@@ -115,6 +115,12 @@ const workspaceGeneratorTemplate = {
|
|
|
115
115
|
relativePath: 'template/index.ts',
|
|
116
116
|
content: (0, _indexTpl().indexTemplate)()
|
|
117
117
|
}];
|
|
118
|
+
},
|
|
119
|
+
config: {
|
|
120
|
+
'teambit.harmony/aspect': {},
|
|
121
|
+
'teambit.envs/envs': {
|
|
122
|
+
env: 'teambit.harmony/aspect'
|
|
123
|
+
}
|
|
118
124
|
}
|
|
119
125
|
};
|
|
120
126
|
exports.workspaceGeneratorTemplate = workspaceGeneratorTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["workspaceGeneratorTemplate","name","description","generateFiles","context","relativePath","content","isMain"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,qBADqD;AAE3DC,EAAAA,WAAW,EACT,gIAHyD;AAI3DC,EAAAA,aAAa,EAAGC,OAAD,IAA+B;AAC5C,WAAO,CACL;AACEC,MAAAA,YAAY,EAAE,UADhB;AAEEC,MAAAA,OAAO,EAAE,wBAAUF,OAAV,CAFX;AAGEG,MAAAA,MAAM,EAAE;AAHV,KADK,EAML;AACEF,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,YADhC;AAEEK,MAAAA,OAAO,EAAE,8BAAWF,OAAX;AAFX,KANK,EAUL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,kBADhC;AAEEK,MAAAA,OAAO,EAAE,gCAAYF,OAAZ;AAFX,KAVK,EAcL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,WADhC;AAEEK,MAAAA,OAAO,EAAE;AAFX,KAdK,EAkBL;AACED,MAAAA,YAAY,EAAE,8BADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KAlBK,EAsBL;AACED,MAAAA,YAAY,EAAE,+BADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KAtBK,EA0BL;AACED,MAAAA,YAAY,EAAE,oCADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KA1BK,EA8BL;AACED,MAAAA,YAAY,EAAE,mBADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KA9BK,CAAP;AAmCD;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["workspaceGeneratorTemplate","name","description","generateFiles","context","relativePath","content","isMain","config","env"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,qBADqD;AAE3DC,EAAAA,WAAW,EACT,gIAHyD;AAI3DC,EAAAA,aAAa,EAAGC,OAAD,IAA+B;AAC5C,WAAO,CACL;AACEC,MAAAA,YAAY,EAAE,UADhB;AAEEC,MAAAA,OAAO,EAAE,wBAAUF,OAAV,CAFX;AAGEG,MAAAA,MAAM,EAAE;AAHV,KADK,EAML;AACEF,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,YADhC;AAEEK,MAAAA,OAAO,EAAE,8BAAWF,OAAX;AAFX,KANK,EAUL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,kBADhC;AAEEK,MAAAA,OAAO,EAAE,gCAAYF,OAAZ;AAFX,KAVK,EAcL;AACEC,MAAAA,YAAY,EAAG,GAAED,OAAO,CAACH,IAAK,WADhC;AAEEK,MAAAA,OAAO,EAAE;AAFX,KAdK,EAkBL;AACED,MAAAA,YAAY,EAAE,8BADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KAlBK,EAsBL;AACED,MAAAA,YAAY,EAAE,+BADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KAtBK,EA0BL;AACED,MAAAA,YAAY,EAAE,oCADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KA1BK,EA8BL;AACED,MAAAA,YAAY,EAAE,mBADhB;AAEEC,MAAAA,OAAO,EAAE;AAFX,KA9BK,CAAP;AAmCD,GAxC0D;AAyC3DE,EAAAA,MAAM,EAAE;AACN,8BAA0B,EADpB;AAEN,yBAAqB;AACnBC,MAAAA,GAAG,EAAE;AADc;AAFf;AAzCmD,CAAtD","sourcesContent":["import { ComponentContext, ComponentTemplate } from '@teambit/generator';\nimport { indexFile } from './files/index';\nimport { aspectFile } from './files/aspect-file';\nimport { docsFile } from './files/docs-file';\nimport { mainRuntime } from './files/main-runtime';\nimport { gitIgnoreTemplate } from './files/git-ignore-tpl';\nimport { readmeTemplate } from './files/readme-tpl';\nimport { indexTemplate } from './files/index-tpl';\nimport { workspaceConfigTemplate } from './files/workspace-config-tpl';\n\nexport const workspaceGeneratorTemplate: ComponentTemplate = {\n name: 'workspace-generator',\n description:\n 'create your own workspace generator - \\nDocs: https://harmony-docs.bit.dev/extending-bit/creating-a-custom-workspace-generator',\n generateFiles: (context: ComponentContext) => {\n return [\n {\n relativePath: 'index.ts',\n content: indexFile(context),\n isMain: true,\n },\n {\n relativePath: `${context.name}.aspect.ts`,\n content: aspectFile(context),\n },\n {\n relativePath: `${context.name}.main.runtime.ts`,\n content: mainRuntime(context),\n },\n {\n relativePath: `${context.name}.docs.mdx`,\n content: docsFile(),\n },\n {\n relativePath: 'template/files/git-ignore.ts',\n content: gitIgnoreTemplate(),\n },\n {\n relativePath: 'template/files/readme-file.ts',\n content: readmeTemplate(),\n },\n {\n relativePath: 'template/files/workspace-config.ts',\n content: workspaceConfigTemplate(),\n },\n {\n relativePath: 'template/index.ts',\n content: indexTemplate(),\n },\n ];\n },\n config: {\n 'teambit.harmony/aspect': {},\n 'teambit.envs/envs': {\n env: 'teambit.harmony/aspect',\n },\n },\n};\n"]}
|
|
@@ -340,7 +340,7 @@ class WorkspaceGenerator {
|
|
|
340
340
|
updateExisting: true
|
|
341
341
|
});
|
|
342
342
|
});
|
|
343
|
-
await this.workspace.
|
|
343
|
+
await this.workspace.bitMap.write();
|
|
344
344
|
await dependencyResolver.persistConfig(this.workspace.path);
|
|
345
345
|
this.workspace.clearCache();
|
|
346
346
|
await this.compileComponents();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["workspace-generator.ts"],"names":["WorkspaceGenerator","constructor","workspaceName","options","template","aspectComponent","workspacePath","path","resolve","generate","fs","existsSync","Error","ensureDir","process","chdir","initGit","skipGit","writeWorkspaceFiles","reloadBitInWorkspaceDir","addComponentsFromRemote","workspace","install","undefined","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","updateExisting","err","remove","gitExecutablePath","params","exitCodeName","GitNotFound","buildUI","uiMain","harmony","get","UIAspect","id","createRuntime","workspaceContext","name","defaultScope","empty","templateFiles","generateFiles","Promise","all","map","templateFile","outputFile","join","relativePath","content","WorkspaceAspect","loggerMain","LoggerAspect","logger","createLogger","GeneratorAspect","componentsToImport","importComponents","length","dependencyResolver","DependencyResolverAspect","componentsToImportResolved","c","ComponentID","fromLegacy","BitId","parse","targetName","componentIds","components","scope","getRemoteComponent","oldAndNewPackageNames","getNewPackageNames","oldAndNewComponentIds","getNewComponentIds","comp","replaceOriginalPackageNameWithNew","compData","find","_legacy","isEqualWithoutVersion","toString","write","track","rootDir","componentName","fullName","mainFile","state","_consumer","deps","getDependencies","currentPackages","Object","keys","workspacePolicyEntries","filter","dep","source","dependencyId","getPackageName","lifecycleType","lifecycle","value","version","entry","includes","addToRootPolicy","writeBitMap","persistConfig","clearCache","compileComponents","compiler","CompilerAspect","compileOnWorkspace","compsData","pkg","PkgAspect","packageToReplace","scopeToReplace","replace","forEach","newId","resolveNewCompId","currentPackageName","newName","newPackageName","componentToReplace","toStringWithoutVersion","isEqualWithoutScopeAndVersion","changeScope","filesystem","files","file","isBinary","contents","strContent","newContent","currentPackage","currentPkgRegex","RegExp","currentId","currentIdRegex","Buffer","from"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { loadBit } from '@teambit/bit';\nimport { Harmony } from '@teambit/harmony';\nimport { Component } from '@teambit/component';\nimport execa from 'execa';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport pMapSeries from 'p-map-series';\nimport UIAspect, { UiMain } from '@teambit/ui';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { init } from '@teambit/legacy/dist/api/consumer';\nimport { CompilerAspect, CompilerMain } from '@teambit/compiler';\nimport getGitExecutablePath from '@teambit/legacy/dist/utils/git/git-executable';\nimport GitNotFound from '@teambit/legacy/dist/utils/git/exceptions/git-not-found';\nimport path from 'path';\nimport { DependencyResolverMain, DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewOptions } from './new.cmd';\nimport { GeneratorAspect } from './generator.aspect';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\ntype CompToImportResolved = {\n id: ComponentID;\n path: string;\n targetName?: string;\n};\n\nexport class WorkspaceGenerator {\n private workspacePath: string;\n private harmony: Harmony;\n private workspace: Workspace;\n private logger: Logger;\n constructor(\n private workspaceName: string,\n private options: NewOptions,\n private template: WorkspaceTemplate,\n private aspectComponent?: Component\n ) {\n this.workspacePath = path.resolve(this.workspaceName);\n }\n\n async generate(): Promise<string> {\n if (fs.existsSync(this.workspacePath)) {\n throw new Error(`unable to create a workspace at \"${this.workspaceName}\", this path already exist`);\n }\n await fs.ensureDir(this.workspacePath);\n try {\n process.chdir(this.workspacePath);\n await this.initGit();\n await init(this.workspacePath, this.options.skipGit, false, false, false, false, {});\n await this.writeWorkspaceFiles();\n await this.reloadBitInWorkspaceDir();\n await this.addComponentsFromRemote();\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n // await this.buildUI(); // disabled for now. it takes too long\n } catch (err: any) {\n await fs.remove(this.workspacePath);\n throw err;\n }\n\n return this.workspacePath;\n }\n\n private async initGit() {\n if (this.options.skipGit) return;\n const gitExecutablePath = getGitExecutablePath();\n const params = ['init'];\n try {\n await execa(gitExecutablePath, params);\n } catch (err: any) {\n if (err.exitCodeName === 'ENOENT') {\n throw new GitNotFound(gitExecutablePath, err);\n }\n throw err;\n }\n }\n\n private async buildUI() {\n const uiMain = this.harmony.get<UiMain>(UIAspect.id);\n await uiMain.createRuntime({});\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeWorkspaceFiles(): Promise<void> {\n const workspaceContext = {\n name: this.workspaceName,\n defaultScope: this.options.defaultScope,\n empty: this.options.empty,\n aspectComponent: this.aspectComponent,\n };\n const templateFiles = await this.template.generateFiles(workspaceContext);\n await Promise.all(\n templateFiles.map(async (templateFile) => {\n await fs.outputFile(path.join(this.workspacePath, templateFile.relativePath), templateFile.content);\n })\n );\n }\n\n private async reloadBitInWorkspaceDir() {\n this.harmony = await loadBit(this.workspacePath);\n this.workspace = this.harmony.get<Workspace>(WorkspaceAspect.id);\n const loggerMain = this.harmony.get<LoggerMain>(LoggerAspect.id);\n this.logger = loggerMain.createLogger(GeneratorAspect.id);\n }\n\n private async addComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToImport = this.template?.importComponents?.();\n if (!componentsToImport || !componentsToImport.length) return;\n const dependencyResolver = this.harmony.get<DependencyResolverMain>(DependencyResolverAspect.id);\n\n const componentsToImportResolved = await Promise.all(\n componentsToImport.map(async (c) => ({\n id: ComponentID.fromLegacy(BitId.parse(c.id, true)),\n path: c.path,\n targetName: c.targetName,\n }))\n );\n const componentIds = componentsToImportResolved.map((c) => c.id);\n // @todo: improve performance by changing `getRemoteComponent` api to accept multiple ids\n const components = await Promise.all(componentIds.map((id) => this.workspace.scope.getRemoteComponent(id)));\n const oldAndNewPackageNames = this.getNewPackageNames(components, componentsToImportResolved);\n const oldAndNewComponentIds = this.getNewComponentIds(components, componentsToImportResolved);\n await Promise.all(\n components.map((comp) =>\n this.replaceOriginalPackageNameWithNew(comp, oldAndNewPackageNames, oldAndNewComponentIds)\n )\n );\n await pMapSeries(components, async (comp) => {\n const compData = componentsToImportResolved.find((c) => c.id._legacy.isEqualWithoutVersion(comp.id._legacy));\n if (!compData) throw new Error(`workspace-generator, unable to find ${comp.id.toString()} in the given ids`);\n await this.workspace.write(compData.path, comp);\n await this.workspace.track({\n rootDir: compData.path,\n componentName: compData.targetName || compData.id.fullName,\n mainFile: comp.state._consumer.mainFile,\n });\n const deps = await dependencyResolver.getDependencies(comp);\n\n const currentPackages = Object.keys(oldAndNewPackageNames);\n // only bring auto-resolved dependencies, others should be set in the workspace.jsonc template\n const workspacePolicyEntries = deps\n .filter((dep) => dep.source === 'auto')\n .map((dep) => ({\n dependencyId: dep.getPackageName?.() || dep.id,\n lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,\n value: {\n version: dep.version,\n },\n }))\n .filter((entry) => !currentPackages.includes(entry.dependencyId)); // remove components that are now imported\n dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });\n });\n await this.workspace.writeBitMap();\n await dependencyResolver.persistConfig(this.workspace.path);\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async compileComponents() {\n const compiler = this.harmony.get<CompilerMain>(CompilerAspect.id);\n await compiler.compileOnWorkspace();\n }\n\n private getNewPackageNames(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldPackageName: string]: string } {\n const pkg = this.harmony.get<PkgMain>(PkgAspect.id);\n const packageToReplace = {};\n const scopeToReplace = this.workspace.defaultScope.replace('.', '/');\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n const currentPackageName = pkg.getPackageName(comp);\n const newName = newId.fullName.replace(/\\//g, '.');\n const newPackageName = `@${scopeToReplace}.${newName}`;\n packageToReplace[currentPackageName] = newPackageName;\n });\n return packageToReplace;\n }\n\n private getNewComponentIds(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldComponentId: string]: string } {\n const componentToReplace = {};\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n componentToReplace[comp.id.toStringWithoutVersion()] = newId.toStringWithoutVersion();\n });\n return componentToReplace;\n }\n\n private resolveNewCompId(comp: Component, compsData: CompToImportResolved[]): ComponentID {\n const scopeToReplace = this.workspace.defaultScope;\n const compData = compsData.find((c) => c.id._legacy.isEqualWithoutScopeAndVersion(comp.id._legacy));\n if (!compData) {\n throw new Error(`workspace-generator: unable to find data for \"${comp.id._legacy.toString()}\"`);\n }\n return compData.targetName\n ? ComponentID.fromLegacy(BitId.parse(compData.targetName, false).changeScope(scopeToReplace))\n : comp.id.changeScope(scopeToReplace);\n }\n\n private async replaceOriginalPackageNameWithNew(\n comp: Component,\n packageToReplace: Record<string, string>,\n oldAndNewComponentIds: Record<string, string>\n ) {\n await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return;\n const strContent = file.contents.toString();\n let newContent = strContent;\n Object.keys(packageToReplace).forEach((currentPackage) => {\n if (strContent.includes(currentPackage)) {\n const currentPkgRegex = new RegExp(currentPackage, 'g');\n newContent = newContent.replace(currentPkgRegex, packageToReplace[currentPackage]);\n }\n });\n Object.keys(oldAndNewComponentIds).forEach((currentId) => {\n if (strContent.includes(currentId)) {\n const currentIdRegex = new RegExp(currentId, 'g');\n newContent = newContent.replace(currentIdRegex, oldAndNewComponentIds[currentId]);\n }\n });\n if (strContent !== newContent) {\n file.contents = Buffer.from(newContent);\n }\n })\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["workspace-generator.ts"],"names":["WorkspaceGenerator","constructor","workspaceName","options","template","aspectComponent","workspacePath","path","resolve","generate","fs","existsSync","Error","ensureDir","process","chdir","initGit","skipGit","writeWorkspaceFiles","reloadBitInWorkspaceDir","addComponentsFromRemote","workspace","install","undefined","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","updateExisting","err","remove","gitExecutablePath","params","exitCodeName","GitNotFound","buildUI","uiMain","harmony","get","UIAspect","id","createRuntime","workspaceContext","name","defaultScope","empty","templateFiles","generateFiles","Promise","all","map","templateFile","outputFile","join","relativePath","content","WorkspaceAspect","loggerMain","LoggerAspect","logger","createLogger","GeneratorAspect","componentsToImport","importComponents","length","dependencyResolver","DependencyResolverAspect","componentsToImportResolved","c","ComponentID","fromLegacy","BitId","parse","targetName","componentIds","components","scope","getRemoteComponent","oldAndNewPackageNames","getNewPackageNames","oldAndNewComponentIds","getNewComponentIds","comp","replaceOriginalPackageNameWithNew","compData","find","_legacy","isEqualWithoutVersion","toString","write","track","rootDir","componentName","fullName","mainFile","state","_consumer","deps","getDependencies","currentPackages","Object","keys","workspacePolicyEntries","filter","dep","source","dependencyId","getPackageName","lifecycleType","lifecycle","value","version","entry","includes","addToRootPolicy","bitMap","persistConfig","clearCache","compileComponents","compiler","CompilerAspect","compileOnWorkspace","compsData","pkg","PkgAspect","packageToReplace","scopeToReplace","replace","forEach","newId","resolveNewCompId","currentPackageName","newName","newPackageName","componentToReplace","toStringWithoutVersion","isEqualWithoutScopeAndVersion","changeScope","filesystem","files","file","isBinary","contents","strContent","newContent","currentPackage","currentPkgRegex","RegExp","currentId","currentIdRegex","Buffer","from"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { loadBit } from '@teambit/bit';\nimport { Harmony } from '@teambit/harmony';\nimport { Component } from '@teambit/component';\nimport execa from 'execa';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport pMapSeries from 'p-map-series';\nimport UIAspect, { UiMain } from '@teambit/ui';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { init } from '@teambit/legacy/dist/api/consumer';\nimport { CompilerAspect, CompilerMain } from '@teambit/compiler';\nimport getGitExecutablePath from '@teambit/legacy/dist/utils/git/git-executable';\nimport GitNotFound from '@teambit/legacy/dist/utils/git/exceptions/git-not-found';\nimport path from 'path';\nimport { DependencyResolverMain, DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewOptions } from './new.cmd';\nimport { GeneratorAspect } from './generator.aspect';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\ntype CompToImportResolved = {\n id: ComponentID;\n path: string;\n targetName?: string;\n};\n\nexport class WorkspaceGenerator {\n private workspacePath: string;\n private harmony: Harmony;\n private workspace: Workspace;\n private logger: Logger;\n constructor(\n private workspaceName: string,\n private options: NewOptions,\n private template: WorkspaceTemplate,\n private aspectComponent?: Component\n ) {\n this.workspacePath = path.resolve(this.workspaceName);\n }\n\n async generate(): Promise<string> {\n if (fs.existsSync(this.workspacePath)) {\n throw new Error(`unable to create a workspace at \"${this.workspaceName}\", this path already exist`);\n }\n await fs.ensureDir(this.workspacePath);\n try {\n process.chdir(this.workspacePath);\n await this.initGit();\n await init(this.workspacePath, this.options.skipGit, false, false, false, false, {});\n await this.writeWorkspaceFiles();\n await this.reloadBitInWorkspaceDir();\n await this.addComponentsFromRemote();\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n // await this.buildUI(); // disabled for now. it takes too long\n } catch (err: any) {\n await fs.remove(this.workspacePath);\n throw err;\n }\n\n return this.workspacePath;\n }\n\n private async initGit() {\n if (this.options.skipGit) return;\n const gitExecutablePath = getGitExecutablePath();\n const params = ['init'];\n try {\n await execa(gitExecutablePath, params);\n } catch (err: any) {\n if (err.exitCodeName === 'ENOENT') {\n throw new GitNotFound(gitExecutablePath, err);\n }\n throw err;\n }\n }\n\n private async buildUI() {\n const uiMain = this.harmony.get<UiMain>(UIAspect.id);\n await uiMain.createRuntime({});\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeWorkspaceFiles(): Promise<void> {\n const workspaceContext = {\n name: this.workspaceName,\n defaultScope: this.options.defaultScope,\n empty: this.options.empty,\n aspectComponent: this.aspectComponent,\n };\n const templateFiles = await this.template.generateFiles(workspaceContext);\n await Promise.all(\n templateFiles.map(async (templateFile) => {\n await fs.outputFile(path.join(this.workspacePath, templateFile.relativePath), templateFile.content);\n })\n );\n }\n\n private async reloadBitInWorkspaceDir() {\n this.harmony = await loadBit(this.workspacePath);\n this.workspace = this.harmony.get<Workspace>(WorkspaceAspect.id);\n const loggerMain = this.harmony.get<LoggerMain>(LoggerAspect.id);\n this.logger = loggerMain.createLogger(GeneratorAspect.id);\n }\n\n private async addComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToImport = this.template?.importComponents?.();\n if (!componentsToImport || !componentsToImport.length) return;\n const dependencyResolver = this.harmony.get<DependencyResolverMain>(DependencyResolverAspect.id);\n\n const componentsToImportResolved = await Promise.all(\n componentsToImport.map(async (c) => ({\n id: ComponentID.fromLegacy(BitId.parse(c.id, true)),\n path: c.path,\n targetName: c.targetName,\n }))\n );\n const componentIds = componentsToImportResolved.map((c) => c.id);\n // @todo: improve performance by changing `getRemoteComponent` api to accept multiple ids\n const components = await Promise.all(componentIds.map((id) => this.workspace.scope.getRemoteComponent(id)));\n const oldAndNewPackageNames = this.getNewPackageNames(components, componentsToImportResolved);\n const oldAndNewComponentIds = this.getNewComponentIds(components, componentsToImportResolved);\n await Promise.all(\n components.map((comp) =>\n this.replaceOriginalPackageNameWithNew(comp, oldAndNewPackageNames, oldAndNewComponentIds)\n )\n );\n await pMapSeries(components, async (comp) => {\n const compData = componentsToImportResolved.find((c) => c.id._legacy.isEqualWithoutVersion(comp.id._legacy));\n if (!compData) throw new Error(`workspace-generator, unable to find ${comp.id.toString()} in the given ids`);\n await this.workspace.write(compData.path, comp);\n await this.workspace.track({\n rootDir: compData.path,\n componentName: compData.targetName || compData.id.fullName,\n mainFile: comp.state._consumer.mainFile,\n });\n const deps = await dependencyResolver.getDependencies(comp);\n\n const currentPackages = Object.keys(oldAndNewPackageNames);\n // only bring auto-resolved dependencies, others should be set in the workspace.jsonc template\n const workspacePolicyEntries = deps\n .filter((dep) => dep.source === 'auto')\n .map((dep) => ({\n dependencyId: dep.getPackageName?.() || dep.id,\n lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,\n value: {\n version: dep.version,\n },\n }))\n .filter((entry) => !currentPackages.includes(entry.dependencyId)); // remove components that are now imported\n dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });\n });\n await this.workspace.bitMap.write();\n await dependencyResolver.persistConfig(this.workspace.path);\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async compileComponents() {\n const compiler = this.harmony.get<CompilerMain>(CompilerAspect.id);\n await compiler.compileOnWorkspace();\n }\n\n private getNewPackageNames(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldPackageName: string]: string } {\n const pkg = this.harmony.get<PkgMain>(PkgAspect.id);\n const packageToReplace = {};\n const scopeToReplace = this.workspace.defaultScope.replace('.', '/');\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n const currentPackageName = pkg.getPackageName(comp);\n const newName = newId.fullName.replace(/\\//g, '.');\n const newPackageName = `@${scopeToReplace}.${newName}`;\n packageToReplace[currentPackageName] = newPackageName;\n });\n return packageToReplace;\n }\n\n private getNewComponentIds(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldComponentId: string]: string } {\n const componentToReplace = {};\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n componentToReplace[comp.id.toStringWithoutVersion()] = newId.toStringWithoutVersion();\n });\n return componentToReplace;\n }\n\n private resolveNewCompId(comp: Component, compsData: CompToImportResolved[]): ComponentID {\n const scopeToReplace = this.workspace.defaultScope;\n const compData = compsData.find((c) => c.id._legacy.isEqualWithoutScopeAndVersion(comp.id._legacy));\n if (!compData) {\n throw new Error(`workspace-generator: unable to find data for \"${comp.id._legacy.toString()}\"`);\n }\n return compData.targetName\n ? ComponentID.fromLegacy(BitId.parse(compData.targetName, false).changeScope(scopeToReplace))\n : comp.id.changeScope(scopeToReplace);\n }\n\n private async replaceOriginalPackageNameWithNew(\n comp: Component,\n packageToReplace: Record<string, string>,\n oldAndNewComponentIds: Record<string, string>\n ) {\n await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return;\n const strContent = file.contents.toString();\n let newContent = strContent;\n Object.keys(packageToReplace).forEach((currentPackage) => {\n if (strContent.includes(currentPackage)) {\n const currentPkgRegex = new RegExp(currentPackage, 'g');\n newContent = newContent.replace(currentPkgRegex, packageToReplace[currentPackage]);\n }\n });\n Object.keys(oldAndNewComponentIds).forEach((currentId) => {\n if (strContent.includes(currentId)) {\n const currentIdRegex = new RegExp(currentId, 'g');\n newContent = newContent.replace(currentIdRegex, oldAndNewComponentIds[currentId]);\n }\n });\n if (strContent !== newContent) {\n file.contents = Buffer.from(newContent);\n }\n })\n );\n }\n}\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/generator",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.596",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/generator/generator",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.generator",
|
|
8
8
|
"name": "generator",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.596"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"camelcase": "6.2.0",
|
|
@@ -21,21 +21,21 @@
|
|
|
21
21
|
"isbinaryfile": "4.0.6",
|
|
22
22
|
"@babel/runtime": "7.12.18",
|
|
23
23
|
"core-js": "^3.0.0",
|
|
24
|
-
"@teambit/bit-error": "0.0.
|
|
25
|
-
"@teambit/component-id": "0.0.
|
|
26
|
-
"@teambit/
|
|
27
|
-
"@teambit/
|
|
28
|
-
"@teambit/
|
|
29
|
-
"@teambit/
|
|
30
|
-
"@teambit/
|
|
31
|
-
"@teambit/
|
|
32
|
-
"@teambit/
|
|
33
|
-
"@teambit/legacy-bit-id": "0.0.
|
|
34
|
-
"@teambit/compiler": "0.0.
|
|
35
|
-
"@teambit/dependency-resolver": "0.0.
|
|
36
|
-
"@teambit/logger": "0.0.
|
|
37
|
-
"@teambit/pkg": "0.0.
|
|
38
|
-
"@teambit/ui": "0.0.
|
|
24
|
+
"@teambit/bit-error": "0.0.394",
|
|
25
|
+
"@teambit/component-id": "0.0.398",
|
|
26
|
+
"@teambit/component": "0.0.596",
|
|
27
|
+
"@teambit/envs": "0.0.596",
|
|
28
|
+
"@teambit/workspace": "0.0.596",
|
|
29
|
+
"@teambit/cli": "0.0.409",
|
|
30
|
+
"@teambit/graphql": "0.0.596",
|
|
31
|
+
"@teambit/aspect-loader": "0.0.596",
|
|
32
|
+
"@teambit/bit": "0.0.598",
|
|
33
|
+
"@teambit/legacy-bit-id": "0.0.397",
|
|
34
|
+
"@teambit/compiler": "0.0.596",
|
|
35
|
+
"@teambit/dependency-resolver": "0.0.596",
|
|
36
|
+
"@teambit/logger": "0.0.497",
|
|
37
|
+
"@teambit/pkg": "0.0.596",
|
|
38
|
+
"@teambit/ui": "0.0.596"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/fs-extra": "9.0.7",
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"@types/react-dom": "^17.0.5",
|
|
47
47
|
"@types/react": "^17.0.8",
|
|
48
48
|
"@types/node": "12.20.4",
|
|
49
|
-
"@teambit/generator.aspect-docs.generator": "0.0.
|
|
49
|
+
"@teambit/generator.aspect-docs.generator": "0.0.134"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@teambit/legacy": "1.0.
|
|
52
|
+
"@teambit/legacy": "1.0.196",
|
|
53
53
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
54
54
|
"react": "^16.8.0 || ^17.0.0"
|
|
55
55
|
},
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"react": "-"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
|
-
"@teambit/legacy": "1.0.
|
|
80
|
+
"@teambit/legacy": "1.0.196",
|
|
81
81
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
82
82
|
"react": "^16.8.0 || ^17.0.0"
|
|
83
83
|
}
|
|
Binary file
|