@fishawack/lab-env 4.45.0-beta.1 → 4.45.0-beta.2
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 +16 -0
- package/_Ai/vue-3.md +327 -25
- package/bitbucket-pipelines.yml +3 -1
- package/core/1/CHANGELOG.md +136 -0
- package/core/1/Dockerfile +113 -0
- package/core/1/README.md +9 -0
- package/core/1/bitbucket-pipelines.yml +82 -0
- package/core/1/docker-compose.yml +37 -0
- package/core/1/entrypoint.sh +24 -0
- package/core/1/package.json +47 -0
- package/globals.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
+
### 4.45.0-beta.2 (2025-09-01)
|
|
4
|
+
|
|
5
|
+
#### Features
|
|
6
|
+
|
|
7
|
+
* added mcp instructions file ([3f27ac9](https://bitbucket.org/fishawackdigital/lab-env/commits/3f27ac954f440edae1c96439c2f46f1c277ee3c0))
|
|
8
|
+
* added sass instructions file ([563b7ee](https://bitbucket.org/fishawackdigital/lab-env/commits/563b7eebdcfac1904507930b053846fa575bf038))
|
|
9
|
+
* added workspace instructions file ([1838c42](https://bitbucket.org/fishawackdigital/lab-env/commits/1838c42c979c0ad2a0b59f45db9876050ccc2b04))
|
|
10
|
+
* updated vue instructions to have style specifics ([695713a](https://bitbucket.org/fishawackdigital/lab-env/commits/695713a8b2bf61908fb05c331f8b47e7196d2f2d))
|
|
11
|
+
|
|
12
|
+
#### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* added note about resources being _Build/sass on static projects ([1b66bb2](https://bitbucket.org/fishawackdigital/lab-env/commits/1b66bb2f206cde8847f9859581b1c87603d161d8))
|
|
15
|
+
* beta branch now installs submodules ([9f78f63](https://bitbucket.org/fishawackdigital/lab-env/commits/9f78f63830562e0e3a0f797a888b0d97465165d0))
|
|
16
|
+
* copy sass instructions on core projects ([70ad3a8](https://bitbucket.org/fishawackdigital/lab-env/commits/70ad3a8d8dfd48c3d208541696619740d8973dfb))
|
|
17
|
+
* renamed files to correct extension ([a54bd0b](https://bitbucket.org/fishawackdigital/lab-env/commits/a54bd0bb59030e20c2e3b35dfbe9aa7b01106103))
|
|
18
|
+
|
|
3
19
|
### 4.45.0-beta.1 (2025-09-01)
|
|
4
20
|
|
|
5
21
|
#### Features
|
package/_Ai/vue-3.md
CHANGED
|
@@ -75,12 +75,13 @@ fw npm -v
|
|
|
75
75
|
|
|
76
76
|
## Project Structure Context
|
|
77
77
|
|
|
78
|
-
- **Vue Components**: Main app component at [`
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
83
|
-
- **
|
|
78
|
+
- **Vue Components**: Main app component at [`resources/vue/app.vue`](resources/vue/app.vue)
|
|
79
|
+
- **Vue Components**: Reusable components in [`resources/vue/components/`](resources/vue/components/) directory
|
|
80
|
+
- **Vue Routes**: Page components in [`resources/vue/routes/`](resources/vue/routes/) directory
|
|
81
|
+
- **Vue Stories**: Component documentation in [`resources/vue/stories/`](resources/vue/stories/) directory
|
|
82
|
+
- **JavaScript**: Main script at [`resources/js/script.js`](resources/js/script.js), utilities in [`resources/js/libs/`](resources/js/libs/) directory
|
|
83
|
+
- **Styles**: SASS files in [`resources/sass/`](resources/sass/) directory
|
|
84
|
+
- **Templates**: Handlebars templates in [`resources/handlebars/`](resources/handlebars/) directory
|
|
84
85
|
- **Tests**: Unit tests in [`_Test/unit/`](_Test/unit/), UI tests in [`_Test/ui/`](_Test/ui/)
|
|
85
86
|
|
|
86
87
|
## Technology Stack
|
|
@@ -144,22 +145,85 @@ The project uses Fishawack's custom build system (`@fishawack/core`):
|
|
|
144
145
|
|
|
145
146
|
## Styling Architecture
|
|
146
147
|
|
|
148
|
+
### Critical Styling Philosophy
|
|
149
|
+
|
|
150
|
+
**NEVER use `<style>` blocks in Vue components** - All styling is managed through the structured SASS architecture. This enforces separation of concerns and maintains optimal build performance.
|
|
151
|
+
|
|
147
152
|
### SASS Structure
|
|
148
153
|
|
|
149
|
-
- [`
|
|
150
|
-
- [`
|
|
151
|
-
- [`
|
|
152
|
-
- [`
|
|
154
|
+
- [`resources/sass/vendor.scss`](resources/sass/vendor.scss): Third-party imports and lab-ui components (cached for performance)
|
|
155
|
+
- [`resources/sass/general.scss`](resources/sass/general.scss): Project-specific component imports (fast-reloading)
|
|
156
|
+
- [`resources/sass/_variables.scss`](resources/sass/_variables.scss): Project color overrides and custom variables
|
|
157
|
+
- [`resources/sass/_defaults.scss`](resources/sass/_defaults.scss): Lab-UI component setting overrides
|
|
158
|
+
- [`resources/sass/components/`](resources/sass/components/): Individual component style files using BEM methodology
|
|
159
|
+
|
|
160
|
+
### BEM Methodology
|
|
161
|
+
|
|
162
|
+
All component styling follows BEM (Block Element Modifier) methodology:
|
|
163
|
+
|
|
164
|
+
```scss
|
|
165
|
+
// Block: Base component
|
|
166
|
+
.card {
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Element: Component part
|
|
170
|
+
.card__header {
|
|
171
|
+
}
|
|
172
|
+
.card__body {
|
|
173
|
+
}
|
|
174
|
+
.card__footer {
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Modifier: Variant or state
|
|
178
|
+
.card--featured {
|
|
179
|
+
}
|
|
180
|
+
.card--compact {
|
|
181
|
+
}
|
|
182
|
+
.card__header--sticky {
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Vue Template Example:**
|
|
187
|
+
|
|
188
|
+
```vue
|
|
189
|
+
<template>
|
|
190
|
+
<article class="card card--featured">
|
|
191
|
+
<header class="card__header card__header--sticky">
|
|
192
|
+
<h2 class="card__title">{{ title }}</h2>
|
|
193
|
+
</header>
|
|
194
|
+
<div class="card__body">
|
|
195
|
+
<p>{{ content }}</p>
|
|
196
|
+
</div>
|
|
197
|
+
</article>
|
|
198
|
+
</template>
|
|
199
|
+
```
|
|
153
200
|
|
|
154
201
|
### UI Library Integration
|
|
155
202
|
|
|
156
|
-
Uses `@fishawack/lab-ui`
|
|
203
|
+
Uses `@fishawack/lab-ui` utility-first framework providing:
|
|
204
|
+
|
|
205
|
+
#### Utility Classes (Tailwind-like system):
|
|
157
206
|
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
207
|
+
- **Spacing**: `m-0`, `m-0.5`, `m-1.5`, `p-2`, `p-3`, `p-4`
|
|
208
|
+
- **Colors**: `bg-1` through `bg-6`, `color-1` through `color-6`
|
|
209
|
+
- **Grid**: `grid__6/12`, `mobile:grid__12/12`, `grid--gutters`
|
|
210
|
+
- **Flexbox**: `flex`, `justify-center`, `items-center`, `flex-column`
|
|
211
|
+
- **Typography**: `text-center`, `font-600`, `uppercase`
|
|
212
|
+
- **Display**: `block`, `hidden`, `mobile:hidden`, `tablet:block`
|
|
213
|
+
|
|
214
|
+
#### Responsive Breakpoints:
|
|
215
|
+
|
|
216
|
+
- `mobile:` - 767px and below
|
|
217
|
+
- `tablet:` - 1023px and below
|
|
218
|
+
- `desktop:` - 1299px and below
|
|
219
|
+
|
|
220
|
+
#### Base Components:
|
|
221
|
+
|
|
222
|
+
- Typography system with semantic font weights
|
|
223
|
+
- 12-column flexbox grid system
|
|
224
|
+
- Button component base with extensive customization
|
|
225
|
+
- Form components with validation states
|
|
226
|
+
- Utility classes for spacing, colors, and layout
|
|
163
227
|
|
|
164
228
|
## Testing Guidelines
|
|
165
229
|
|
|
@@ -187,17 +251,241 @@ fw npm run test
|
|
|
187
251
|
|
|
188
252
|
## Development Guidelines
|
|
189
253
|
|
|
254
|
+
### Vue Component Styling Rules
|
|
255
|
+
|
|
256
|
+
**CRITICAL**: Never use `<style>` or `<style scoped>` blocks in Vue components. All styling must be managed through the SASS architecture.
|
|
257
|
+
|
|
258
|
+
#### Correct Approach:
|
|
259
|
+
|
|
260
|
+
```vue
|
|
261
|
+
<!-- MyComponent.vue -->
|
|
262
|
+
<template>
|
|
263
|
+
<div class="my-component my-component--featured">
|
|
264
|
+
<header class="my-component__header">
|
|
265
|
+
<h2 class="my-component__title">{{ title }}</h2>
|
|
266
|
+
</header>
|
|
267
|
+
<div class="my-component__body">
|
|
268
|
+
<p>{{ content }}</p>
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
</template>
|
|
272
|
+
|
|
273
|
+
<script>
|
|
274
|
+
export default {
|
|
275
|
+
name: "MyComponent",
|
|
276
|
+
props: ["title", "content"],
|
|
277
|
+
};
|
|
278
|
+
</script>
|
|
279
|
+
|
|
280
|
+
<!-- NO <style> block - styles are in resources/sass/components/_my-component.scss -->
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### Corresponding SASS File (`resources/sass/components/_my-component.scss`):
|
|
284
|
+
|
|
285
|
+
```scss
|
|
286
|
+
.my-component {
|
|
287
|
+
// Use lab-ui utilities when possible
|
|
288
|
+
@apply bg-0 p-2 grid--gutters;
|
|
289
|
+
|
|
290
|
+
border: 1px solid $color6;
|
|
291
|
+
border-radius: 4px;
|
|
292
|
+
|
|
293
|
+
&__header {
|
|
294
|
+
@apply border-color-6 pb-1;
|
|
295
|
+
border-bottom: 1px solid;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
&__title {
|
|
299
|
+
@apply font-600 color-4;
|
|
300
|
+
margin: 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
&__body {
|
|
304
|
+
@apply pt-1;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Modifier for featured variant
|
|
308
|
+
&--featured {
|
|
309
|
+
border-color: $color1;
|
|
310
|
+
box-shadow: 0 4px 8px rgba($color1, 0.1);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### BEM Methodology Implementation
|
|
316
|
+
|
|
317
|
+
Use BEM (Block Element Modifier) consistently for all component styling:
|
|
318
|
+
|
|
319
|
+
- **Block**: `.component-name` - The standalone component
|
|
320
|
+
- **Element**: `.component-name__element` - A part of the component
|
|
321
|
+
- **Modifier**: `.component-name--modifier` or `.component-name__element--modifier` - A variant or state
|
|
322
|
+
|
|
323
|
+
#### Vue Template BEM Patterns:
|
|
324
|
+
|
|
325
|
+
```vue
|
|
326
|
+
<template>
|
|
327
|
+
<!-- Block with modifier -->
|
|
328
|
+
<article class="card card--featured">
|
|
329
|
+
<!-- Elements -->
|
|
330
|
+
<header class="card__header card__header--sticky">
|
|
331
|
+
<h2 class="card__title">{{ title }}</h2>
|
|
332
|
+
<button class="card__action card__action--primary">Action</button>
|
|
333
|
+
</header>
|
|
334
|
+
|
|
335
|
+
<div class="card__body">
|
|
336
|
+
<!-- Combine BEM with lab-ui utilities -->
|
|
337
|
+
<p class="card__text color-4 font-400">{{ content }}</p>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
<!-- Conditional modifiers -->
|
|
341
|
+
<footer
|
|
342
|
+
class="card__footer"
|
|
343
|
+
:class="{ 'card__footer--expanded': isExpanded }"
|
|
344
|
+
>
|
|
345
|
+
<slot name="footer" />
|
|
346
|
+
</footer>
|
|
347
|
+
</article>
|
|
348
|
+
</template>
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Lab-UI Utility Integration
|
|
352
|
+
|
|
353
|
+
Combine BEM component styles with lab-ui utilities for optimal performance:
|
|
354
|
+
|
|
355
|
+
#### Layout Utilities:
|
|
356
|
+
|
|
357
|
+
```vue
|
|
358
|
+
<template>
|
|
359
|
+
<div class="dashboard-grid grid grid--gutters">
|
|
360
|
+
<div class="dashboard-card grid__6/12 tablet:grid__12/12">
|
|
361
|
+
<!-- Card content -->
|
|
362
|
+
</div>
|
|
363
|
+
<div class="dashboard-card grid__6/12 tablet:grid__12/12">
|
|
364
|
+
<!-- Card content -->
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
</template>
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
#### Responsive Design:
|
|
371
|
+
|
|
372
|
+
```vue
|
|
373
|
+
<template>
|
|
374
|
+
<nav class="main-nav flex justify-between items-center p-2">
|
|
375
|
+
<div class="main-nav__brand">
|
|
376
|
+
<img
|
|
377
|
+
src="logo.svg"
|
|
378
|
+
alt="Brand"
|
|
379
|
+
class="logo--small tablet:logo--medium"
|
|
380
|
+
/>
|
|
381
|
+
</div>
|
|
382
|
+
|
|
383
|
+
<div class="main-nav__menu hidden tablet:block">
|
|
384
|
+
<!-- Desktop menu -->
|
|
385
|
+
</div>
|
|
386
|
+
|
|
387
|
+
<button class="main-nav__toggle block tablet:hidden">
|
|
388
|
+
<!-- Mobile menu toggle -->
|
|
389
|
+
</button>
|
|
390
|
+
</nav>
|
|
391
|
+
</template>
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Component Development Workflow
|
|
395
|
+
|
|
396
|
+
1. **Create Vue Component**: Focus on structure and behavior only
|
|
397
|
+
2. **Define BEM Classes**: Use semantic class names following BEM methodology
|
|
398
|
+
3. **Create SASS File**: Add corresponding file in `resources/sass/components/`
|
|
399
|
+
4. **Import in General**: Add new component to `resources/sass/general.scss`
|
|
400
|
+
5. **Use Lab-UI Utilities**: Leverage existing utilities before writing custom CSS
|
|
401
|
+
6. **Test Responsively**: Verify component works across all breakpoints
|
|
402
|
+
|
|
190
403
|
### Vue Component Patterns
|
|
191
404
|
|
|
192
405
|
- Use Vue 3 Composition API when appropriate
|
|
193
406
|
- Follow Single File Component (SFC) structure
|
|
194
407
|
- Utilize global components (`GIcon`, `GSvg`) for consistent UI
|
|
408
|
+
- Never include styling within component files
|
|
195
409
|
|
|
196
410
|
### Adding New Routes
|
|
197
411
|
|
|
198
|
-
1. Create component in [`
|
|
199
|
-
2. Add route definition to [`
|
|
412
|
+
1. Create component in [`resources/vue/routes/`](resources/vue/routes/)
|
|
413
|
+
2. Add route definition to [`resources/js/libs/routes.js`](resources/js/libs/routes.js)
|
|
200
414
|
3. Set `prerender: false` if route shouldn't be pre-rendered
|
|
415
|
+
4. Create corresponding SASS file in [`resources/sass/components/`](resources/sass/components/) if custom styling needed
|
|
416
|
+
|
|
417
|
+
### Performance Considerations
|
|
418
|
+
|
|
419
|
+
#### SASS Architecture Benefits:
|
|
420
|
+
|
|
421
|
+
- **Vendor Caching**: Third-party libraries in `vendor.scss` are cached for faster rebuilds
|
|
422
|
+
- **Fast Recompilation**: Project styles in `general.scss` recompile quickly during development
|
|
423
|
+
- **PurgeCSS Optimization**: Unused CSS automatically removed in production builds
|
|
424
|
+
- **No Style Duplication**: Global SASS architecture prevents style repetition across components
|
|
425
|
+
|
|
426
|
+
#### PurgeCSS and Dynamic Classes:
|
|
427
|
+
|
|
428
|
+
```javascript
|
|
429
|
+
// If Vue components add classes dynamically via JavaScript:
|
|
430
|
+
export default {
|
|
431
|
+
methods: {
|
|
432
|
+
highlightElement() {
|
|
433
|
+
// Ensure these classes are preserved in production
|
|
434
|
+
this.$el.classList.add("highlighted", "animated-in");
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
};
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
Add protection in SASS file:
|
|
441
|
+
|
|
442
|
+
```scss
|
|
443
|
+
/* purgecss start ignore */
|
|
444
|
+
.highlighted,
|
|
445
|
+
.animated-in {
|
|
446
|
+
// These classes will be preserved in production builds
|
|
447
|
+
}
|
|
448
|
+
/* purgecss end ignore */
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Styling Anti-Patterns to Avoid
|
|
452
|
+
|
|
453
|
+
❌ **Never do this:**
|
|
454
|
+
|
|
455
|
+
```vue
|
|
456
|
+
<template>
|
|
457
|
+
<div class="my-component">
|
|
458
|
+
<p :style="{ color: dynamicColor }">Text</p>
|
|
459
|
+
</div>
|
|
460
|
+
</template>
|
|
461
|
+
|
|
462
|
+
<style scoped>
|
|
463
|
+
.my-component {
|
|
464
|
+
padding: 20px;
|
|
465
|
+
}
|
|
466
|
+
</style>
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
✅ **Do this instead:**
|
|
470
|
+
|
|
471
|
+
```vue
|
|
472
|
+
<template>
|
|
473
|
+
<div class="my-component" :class="colorClass">
|
|
474
|
+
<p class="my-component__text">Text</p>
|
|
475
|
+
</div>
|
|
476
|
+
</template>
|
|
477
|
+
|
|
478
|
+
<script>
|
|
479
|
+
export default {
|
|
480
|
+
computed: {
|
|
481
|
+
colorClass() {
|
|
482
|
+
return `my-component--${this.variant}`;
|
|
483
|
+
},
|
|
484
|
+
},
|
|
485
|
+
};
|
|
486
|
+
</script>
|
|
487
|
+
<!-- Styles in resources/sass/components/_my-component.scss -->
|
|
488
|
+
```
|
|
201
489
|
|
|
202
490
|
### Adding Dependencies
|
|
203
491
|
|
|
@@ -230,10 +518,24 @@ The `fw` command is our container orchestration manager that:
|
|
|
230
518
|
|
|
231
519
|
1. Always assume containerized environment with `fw` prefix
|
|
232
520
|
2. Follow Vue.js 3 best practices and Composition API patterns
|
|
233
|
-
3.
|
|
234
|
-
4.
|
|
235
|
-
5.
|
|
236
|
-
6.
|
|
237
|
-
7.
|
|
238
|
-
|
|
239
|
-
|
|
521
|
+
3. **NEVER suggest `<style>` blocks in Vue components** - All styling goes in SASS files
|
|
522
|
+
4. Use BEM methodology for component class naming (`.block__element--modifier`)
|
|
523
|
+
5. Combine lab-ui utilities with custom component styles for optimal performance
|
|
524
|
+
6. Create corresponding SASS files in `resources/sass/components/` for new components
|
|
525
|
+
7. Import new component styles in `resources/sass/general.scss` for fast recompilation
|
|
526
|
+
8. Use existing global components and utilities from lab-ui
|
|
527
|
+
9. Consider the Handlebars template system for static content
|
|
528
|
+
10. Respect the existing SASS architecture and variable system
|
|
529
|
+
11. Ensure new routes are properly configured for SPA routing
|
|
530
|
+
12. Use the existing testing patterns for unit and integration tests
|
|
531
|
+
13. Always test production builds when adding JavaScript-generated CSS classes (PurgeCSS considerations)
|
|
532
|
+
|
|
533
|
+
### Key Styling Principles:
|
|
534
|
+
|
|
535
|
+
- **Separation of Concerns**: Vue handles logic/templates, SASS handles all styling
|
|
536
|
+
- **Utility-First**: Use lab-ui utilities before writing custom CSS
|
|
537
|
+
- **BEM Methodology**: Consistent class naming for maintainable styles
|
|
538
|
+
- **Performance**: Leverage vendor/general file split for optimal build times
|
|
539
|
+
- **Responsive**: Mobile-first design with lab-ui breakpoint system
|
|
540
|
+
|
|
541
|
+
Remember: This is a containerized Vue.js SPA with structured SASS architecture - all operations must go through the `fw` container orchestration manager, and all styling must be managed through the SASS system using BEM methodology.
|
package/bitbucket-pipelines.yml
CHANGED
|
@@ -127,7 +127,9 @@ pipelines:
|
|
|
127
127
|
- production
|
|
128
128
|
size: 4x
|
|
129
129
|
script:
|
|
130
|
-
# Install deps
|
|
130
|
+
# Install lib deps
|
|
131
|
+
- git submodule init && git submodule update
|
|
132
|
+
# Install release deps
|
|
131
133
|
- npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
|
|
132
134
|
# Release version via node so can exit out when no release made
|
|
133
135
|
- |
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
## Changelog
|
|
2
|
+
|
|
3
|
+
### 1.8.0 (2025-08-10)
|
|
4
|
+
|
|
5
|
+
#### Features
|
|
6
|
+
|
|
7
|
+
* new env flag for remote browsers ([f313be6](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/f313be6cde14e05ac832b43127b6c5639fd62015))
|
|
8
|
+
|
|
9
|
+
### 1.8.0-beta.1 (2025-08-10)
|
|
10
|
+
|
|
11
|
+
#### Features
|
|
12
|
+
|
|
13
|
+
* new env flag for remote browsers ([f313be6](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/f313be6cde14e05ac832b43127b6c5639fd62015))
|
|
14
|
+
|
|
15
|
+
### 1.7.2 (2025-05-15)
|
|
16
|
+
|
|
17
|
+
#### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* use n flag in symlink to override if symlink already exists ([cdc1a41](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/cdc1a41639785f65e2076477f33e86a8ea8cb8fa))
|
|
20
|
+
|
|
21
|
+
### 1.7.2-beta.1 (2025-05-15)
|
|
22
|
+
|
|
23
|
+
#### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* use n flag in symlink to override if symlink already exists ([cdc1a41](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/cdc1a41639785f65e2076477f33e86a8ea8cb8fa))
|
|
26
|
+
|
|
27
|
+
### 1.7.1 (2025-05-15)
|
|
28
|
+
|
|
29
|
+
#### Reverts
|
|
30
|
+
|
|
31
|
+
* Revert "feat: installed husky npm module globally" ([91cc456](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/91cc4564ea2fd6650924732a2a75cb4a9fb749b5))
|
|
32
|
+
|
|
33
|
+
### 1.7.1-beta.1 (2025-05-14)
|
|
34
|
+
|
|
35
|
+
#### Reverts
|
|
36
|
+
|
|
37
|
+
* Revert "feat: installed husky npm module globally" ([91cc456](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/91cc4564ea2fd6650924732a2a75cb4a9fb749b5))
|
|
38
|
+
|
|
39
|
+
### 1.7.0 (2025-05-14)
|
|
40
|
+
|
|
41
|
+
#### Features
|
|
42
|
+
|
|
43
|
+
* installed husky npm module globally ([e08f5a7](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e08f5a7850d0743137c26addf694f586c8c8ee74))
|
|
44
|
+
* updated node from 20 to 22 ([e592f6e](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e592f6e93fc6554227f8902c8c1c21a3564a32ce))
|
|
45
|
+
|
|
46
|
+
### 1.7.0-beta.1 (2025-05-14)
|
|
47
|
+
|
|
48
|
+
#### Features
|
|
49
|
+
|
|
50
|
+
* installed husky npm module globally ([e08f5a7](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e08f5a7850d0743137c26addf694f586c8c8ee74))
|
|
51
|
+
* updated node from 20 to 22 ([e592f6e](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e592f6e93fc6554227f8902c8c1c21a3564a32ce))
|
|
52
|
+
|
|
53
|
+
### 1.6.0 (2024-10-22)
|
|
54
|
+
|
|
55
|
+
#### Features
|
|
56
|
+
|
|
57
|
+
* own global node_modules folder so local modules can be linked ([82f84fa](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/82f84faa5dfa7c009458bec4fe3a9f2b437c34bf))
|
|
58
|
+
|
|
59
|
+
### 1.5.2 (2024-10-08)
|
|
60
|
+
|
|
61
|
+
#### Bug Fixes
|
|
62
|
+
|
|
63
|
+
* rclone in alpine image and aws sdk back in full image as rclone used for s3 content ([9e68463](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/9e684631bb83c105aa9e5407e8fee30a788309cd))
|
|
64
|
+
|
|
65
|
+
### 1.5.1 (2024-10-07)
|
|
66
|
+
|
|
67
|
+
#### Bug Fixes
|
|
68
|
+
|
|
69
|
+
* move aws from full image to alpine now that s3 content requests are supported ([a947817](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/a94781756ea482545b63018e72ab30ce25727af9))
|
|
70
|
+
|
|
71
|
+
### 1.5.0 (2024-10-01)
|
|
72
|
+
|
|
73
|
+
#### Features
|
|
74
|
+
|
|
75
|
+
* commit into lab-env and create pull request against development on publish ([22e9c66](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/22e9c666dff1e6453090da472a6cd4f0b89c6fbb))
|
|
76
|
+
|
|
77
|
+
#### Bug Fixes
|
|
78
|
+
|
|
79
|
+
* close source branch by default on pull request ([5208373](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/5208373822272c648a547f9b328720cb4fdf9bd4))
|
|
80
|
+
|
|
81
|
+
### 1.4.2 (2024-10-01)
|
|
82
|
+
|
|
83
|
+
#### Bug Fixes
|
|
84
|
+
|
|
85
|
+
* trigger ci ([301d679](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/301d6795162f0bf8941a3b9413a30092a3e8bf21))
|
|
86
|
+
|
|
87
|
+
### 1.4.1 (2024-07-17)
|
|
88
|
+
* [fix] set global var for git across file system so git avail in mounted volumes i.e node_modules
|
|
89
|
+
|
|
90
|
+
### 1.4.0 (2024-06-04)
|
|
91
|
+
* [feat] bumped node from 18 to 20
|
|
92
|
+
|
|
93
|
+
### 1.3.3 (2024-02-09)
|
|
94
|
+
* [fix] symlink wine64 now htat wine is the default global command but electron expects wine64
|
|
95
|
+
|
|
96
|
+
### 1.3.2 (2024-01-24)
|
|
97
|
+
* [fix] install latest eb cli and use node images python rather than pyenv
|
|
98
|
+
|
|
99
|
+
### 1.3.1 (2024-01-22)
|
|
100
|
+
* [fix] rebuild of image to get the latest chromium version to fix new puppeteer headless mode
|
|
101
|
+
|
|
102
|
+
### 1.3.0 (2023-03-17)
|
|
103
|
+
* [feat] node user is now added to www-data group for easier file permission management
|
|
104
|
+
* [fix] disable npm message about update being available
|
|
105
|
+
|
|
106
|
+
### 1.2.2 (2023-02-25)
|
|
107
|
+
* [fix] set BRANCH and CI_COMMIT_REF_NAME env variables in container
|
|
108
|
+
* [fix] installed git-branch to fetch the current branch for deployment targets
|
|
109
|
+
* [refactor] moved global node module symlinking to alpine image for future use
|
|
110
|
+
|
|
111
|
+
### 1.2.1 (2023-02-25)
|
|
112
|
+
* [fix] install eb cli into root of image rather than root user directory
|
|
113
|
+
* [perf] dont recurse and dont change group of node_modules to speed up command
|
|
114
|
+
* [refactor] set node git flag without switching user directly in dockerfile
|
|
115
|
+
|
|
116
|
+
### 1.1.4 (2023-02-23)
|
|
117
|
+
* [Fix] Installed missing are-you-es5 global npm module
|
|
118
|
+
* [Fix] Installed missing check-dependencies global npm module
|
|
119
|
+
|
|
120
|
+
### 1.1.3 (2023-02-23)
|
|
121
|
+
* [Fix] Switch to ENV for $PATH updates to avoid shell profile loading issues
|
|
122
|
+
* [Fix] Moved chromium to alpine image as its needed for svg tasks and testing
|
|
123
|
+
|
|
124
|
+
### 1.1.2 (2023-02-22)
|
|
125
|
+
* [Fix] cd into $PWD after su command or we'll start in users home directory
|
|
126
|
+
|
|
127
|
+
### 1.1.1 (2023-02-22)
|
|
128
|
+
* [Fix] Use -l login flag for su command for both non interactive and interactive shells
|
|
129
|
+
* [Fix] Switch $PATH writes to .profile so they are executed on non interactive shells
|
|
130
|
+
|
|
131
|
+
### 1.1.0 (2023-02-22)
|
|
132
|
+
* [Feature] Watertight now baked into image so not needed in package.json of projects
|
|
133
|
+
* [Fix] lftp installed in alpine image as it's needed for content tasks
|
|
134
|
+
|
|
135
|
+
### 1.0.0 (2023-02-21)
|
|
136
|
+
* [Misc] initial commit
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#####
|
|
2
|
+
# Alpine image
|
|
3
|
+
#####
|
|
4
|
+
|
|
5
|
+
FROM node:22 AS alpine
|
|
6
|
+
|
|
7
|
+
LABEL org.opencontainers.image.authors="Mike Mellor <mike.mellor@avalerehealth.com>"
|
|
8
|
+
|
|
9
|
+
ARG TARGETARCH
|
|
10
|
+
|
|
11
|
+
WORKDIR /app
|
|
12
|
+
|
|
13
|
+
EXPOSE 3000
|
|
14
|
+
EXPOSE 3001
|
|
15
|
+
|
|
16
|
+
# Get latest apt-get
|
|
17
|
+
RUN apt-get update
|
|
18
|
+
|
|
19
|
+
# Update npm to latest
|
|
20
|
+
RUN npm install -g npm@latest
|
|
21
|
+
|
|
22
|
+
# Install dart sass vm (arch switch)
|
|
23
|
+
RUN curl -L -o /sass.tar.gz https://github.com/sass/dart-sass/releases/download/1.57.1/dart-sass-1.57.1-linux-$(if [ "$TARGETARCH" = "arm64" ]; then echo 'arm64'; else echo 'x64'; fi).tar.gz
|
|
24
|
+
RUN tar -xf /sass.tar.gz -C /
|
|
25
|
+
ENV PATH="${PATH}:/dart-sass/"
|
|
26
|
+
RUN rm -rf /sass.tar.gz
|
|
27
|
+
|
|
28
|
+
# Set safe directory to remove intel errors when running git rev-parse
|
|
29
|
+
RUN su node -c "git config --global --add safe.directory /app"
|
|
30
|
+
|
|
31
|
+
# Also set global git flag for allowing access across filesystems for mounted node_modules dir
|
|
32
|
+
ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1
|
|
33
|
+
|
|
34
|
+
# Disable npm message about updates being available
|
|
35
|
+
RUN su node -c "npm config set update-notifier false"
|
|
36
|
+
|
|
37
|
+
# Add node user to www-data group
|
|
38
|
+
RUN usermod -a -G www-data node
|
|
39
|
+
|
|
40
|
+
# Install lftp
|
|
41
|
+
RUN apt-get install -y lftp
|
|
42
|
+
|
|
43
|
+
# Install chromium
|
|
44
|
+
RUN apt-get install -y chromium fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends
|
|
45
|
+
# Stop Puppeteer downloading browsers during npm install
|
|
46
|
+
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
47
|
+
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
|
|
48
|
+
|
|
49
|
+
# Install package.json checker
|
|
50
|
+
RUN npm install check-dependencies -g
|
|
51
|
+
|
|
52
|
+
# Install node_modules checker
|
|
53
|
+
RUN npm install are-you-es5 -g
|
|
54
|
+
|
|
55
|
+
# Install git branch fetcher
|
|
56
|
+
RUN npm install git-branch -g
|
|
57
|
+
|
|
58
|
+
# Link root global node_modules to ~/.node_modules
|
|
59
|
+
RUN ln -s /usr/local/lib/node_modules/ /home/node/.node_modules
|
|
60
|
+
|
|
61
|
+
# Install rclone
|
|
62
|
+
RUN curl https://rclone.org/install.sh | bash
|
|
63
|
+
|
|
64
|
+
# Cleanup apt-get install folders
|
|
65
|
+
RUN apt-get clean && \
|
|
66
|
+
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
67
|
+
|
|
68
|
+
COPY entrypoint.sh /bin/entrypoint.sh
|
|
69
|
+
RUN chmod +x /bin/entrypoint.sh
|
|
70
|
+
ENTRYPOINT ["/bin/entrypoint.sh"]
|
|
71
|
+
|
|
72
|
+
#####
|
|
73
|
+
# Full image
|
|
74
|
+
#####
|
|
75
|
+
|
|
76
|
+
FROM alpine AS full
|
|
77
|
+
|
|
78
|
+
# Get latest apt-get
|
|
79
|
+
RUN apt-get update
|
|
80
|
+
|
|
81
|
+
# Install ghostscript
|
|
82
|
+
RUN apt-get install -y ghostscript
|
|
83
|
+
|
|
84
|
+
# Install zip
|
|
85
|
+
RUN apt-get install zip
|
|
86
|
+
|
|
87
|
+
# Install AWS Elastic Beanstalk cli
|
|
88
|
+
ENV PATH="${PATH}:/.ebcli-virtual-env/executables"
|
|
89
|
+
RUN apt-get -y install python-is-python3 python3-pip && \
|
|
90
|
+
pip install virtualenv --break-system-packages && \
|
|
91
|
+
git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git ~/aws-eb && \
|
|
92
|
+
python ~/aws-eb/scripts/ebcli_installer.py --location / && \
|
|
93
|
+
rm -rf ~/aws-eb
|
|
94
|
+
|
|
95
|
+
# Install AWS-CLI@2 (arch switch)
|
|
96
|
+
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(if [ "$TARGETARCH" = "arm64" ]; then echo 'aarch64'; else echo 'x86_64'; fi).zip" -o "awscliv2.zip"
|
|
97
|
+
RUN unzip awscliv2.zip
|
|
98
|
+
RUN ./aws/install
|
|
99
|
+
RUN rm -rf ./aws && rm -rf awscliv2.zip
|
|
100
|
+
|
|
101
|
+
# Update electron globally
|
|
102
|
+
RUN npm install -g electron-packager@latest
|
|
103
|
+
|
|
104
|
+
# Install wine64
|
|
105
|
+
RUN apt-get install -y wine64 && \
|
|
106
|
+
ln -s /usr/bin/wine /usr/bin/wine64
|
|
107
|
+
|
|
108
|
+
# Install watertight
|
|
109
|
+
RUN --mount=type=ssh npm install -g git+ssh://git@bitbucket.org/fishawackdigital/watertight-node-auto.git#v6.0.0
|
|
110
|
+
|
|
111
|
+
# Cleanup apt-get install folders
|
|
112
|
+
RUN apt-get clean && \
|
|
113
|
+
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
package/core/1/README.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
definitions:
|
|
2
|
+
services:
|
|
3
|
+
docker:
|
|
4
|
+
image: docker:dind
|
|
5
|
+
memory: 12288
|
|
6
|
+
|
|
7
|
+
pipelines:
|
|
8
|
+
branches:
|
|
9
|
+
master:
|
|
10
|
+
- step:
|
|
11
|
+
image: fishawack/aws-runner
|
|
12
|
+
runs-on:
|
|
13
|
+
- self.hosted
|
|
14
|
+
- linux
|
|
15
|
+
- production
|
|
16
|
+
size: 4x
|
|
17
|
+
script:
|
|
18
|
+
# Install release deps
|
|
19
|
+
- npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
|
|
20
|
+
# Release version via node so can exit out when no release made
|
|
21
|
+
- |
|
|
22
|
+
node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
|
|
23
|
+
# Copy ssh keys so physical files exist for agent to use
|
|
24
|
+
- cp /build/*/ssh/* ~/.ssh/
|
|
25
|
+
# Start ssh agent and add all (if any) keys
|
|
26
|
+
- eval `ssh-agent` && ssh-add || true
|
|
27
|
+
# Publish docker image
|
|
28
|
+
- docker login $DOCKER_CREDENTIALS && docker buildx create --use && npm run image
|
|
29
|
+
# Sync beta after publish
|
|
30
|
+
- git config --global user.email "digital@fishawack.com"
|
|
31
|
+
- git config --global user.name "Digital Fishawack"
|
|
32
|
+
- git fetch origin "+refs/heads/*:refs/remotes/origin/*" && git checkout beta && git merge master && git push origin beta
|
|
33
|
+
# Commit and create pull request for new version on lab-env repo
|
|
34
|
+
- git clone https://$GIT_CREDENTIALS@bitbucket.org/fishawackdigital/lab-env
|
|
35
|
+
- cd lab-env
|
|
36
|
+
- git checkout -b "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT" origin/beta
|
|
37
|
+
- git submodule init
|
|
38
|
+
- git submodule update
|
|
39
|
+
- git submodule update --remote --merge core/1
|
|
40
|
+
- git add .
|
|
41
|
+
- |
|
|
42
|
+
git commit --allow-empty -m "build(core/1): Bumped $BITBUCKET_REPO_SLUG"
|
|
43
|
+
- git push origin "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT"
|
|
44
|
+
- |
|
|
45
|
+
curl https://api.bitbucket.org/2.0/repositories/fishawackdigital/lab-env/pullrequests \
|
|
46
|
+
-u $GIT_CREDENTIALS \
|
|
47
|
+
--header 'Content-Type: application/json' \
|
|
48
|
+
--data "{
|
|
49
|
+
\"title\": \"Bumped $BITBUCKET_REPO_SLUG\",
|
|
50
|
+
\"destination\": {
|
|
51
|
+
\"branch\": {
|
|
52
|
+
\"name\": \"beta\"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
\"source\": {
|
|
56
|
+
\"branch\": {
|
|
57
|
+
\"name\": \"$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT\"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
\"reviewers\": [
|
|
61
|
+
{
|
|
62
|
+
\"uuid\": \"{2518e4c3-fc1d-4653-b355-c00be099ce6c}\"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
\"close_source_branch\": true
|
|
66
|
+
}"
|
|
67
|
+
services:
|
|
68
|
+
- docker
|
|
69
|
+
beta:
|
|
70
|
+
- step:
|
|
71
|
+
image: fishawack/aws-runner
|
|
72
|
+
runs-on:
|
|
73
|
+
- self.hosted
|
|
74
|
+
- linux
|
|
75
|
+
- production
|
|
76
|
+
size: 4x
|
|
77
|
+
script:
|
|
78
|
+
# Install deps
|
|
79
|
+
- npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
|
|
80
|
+
# Release version via node so can exit out when no release made
|
|
81
|
+
- |
|
|
82
|
+
node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
services:
|
|
2
|
+
core:
|
|
3
|
+
build:
|
|
4
|
+
context: $FW_CORE_1_CONTEXT
|
|
5
|
+
target: $FW_CORE_1_TARGET
|
|
6
|
+
ssh:
|
|
7
|
+
- default
|
|
8
|
+
args:
|
|
9
|
+
target: $FW_CORE_1_TARGET
|
|
10
|
+
target_image: $FW_CORE_1_TARGET_IMAGE
|
|
11
|
+
image: $FW_CORE_1_IMAGE:${FW_CORE_1_VERSION:-latest}
|
|
12
|
+
init: true
|
|
13
|
+
tty: true
|
|
14
|
+
volumes:
|
|
15
|
+
- $CWD/:/app
|
|
16
|
+
- $FW_DIR/targets:/home/node/targets
|
|
17
|
+
- $FW_DIR/.ssh:/home/node/.ssh
|
|
18
|
+
- $FW_DIR/.aws:/home/node/.aws
|
|
19
|
+
- node_modules:/app/node_modules
|
|
20
|
+
ports:
|
|
21
|
+
- ${PORT:-3000}:${PORT:-3000}
|
|
22
|
+
- ${PORT_OPT:-3001}:${PORT_OPT:-3001}
|
|
23
|
+
environment:
|
|
24
|
+
- REPO=${REPO:-}
|
|
25
|
+
- PORT=${PORT:-3000}
|
|
26
|
+
- PORT_OPT=${PORT_OPT:-3001}
|
|
27
|
+
- PORT_WEB=${PORT_WEB:-8000}
|
|
28
|
+
- PORT_DB=${PORT_DB:-3306}
|
|
29
|
+
- USER_UID=${USER_UID:-0}
|
|
30
|
+
- USER_GID=${USER_GID:-0}
|
|
31
|
+
- FW_ROOT=${FW_ROOT:-}
|
|
32
|
+
- BRANCH=${BRANCH:-}
|
|
33
|
+
- CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME:-}
|
|
34
|
+
- REMOTE_BROWSERS=${REMOTE_BROWSERS:-chrome}
|
|
35
|
+
volumes:
|
|
36
|
+
node_modules:
|
|
37
|
+
driver: "local"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Setting $FW_ROOT will bypass the user switch to node
|
|
4
|
+
if [ -z "$FW_ROOT" ]; then
|
|
5
|
+
# Set node user id to match host users id so no permission issues outside of docker
|
|
6
|
+
usermod -u $USER_UID node &>/dev/null
|
|
7
|
+
|
|
8
|
+
# Own the node_modules folder otherwise it'll be owned by root/previous node id which will prevent writing
|
|
9
|
+
chown node /app/node_modules
|
|
10
|
+
|
|
11
|
+
# Own the global node_modules folder otherwise it'll be owned by root/previous node id which will prevent writing
|
|
12
|
+
chown node /usr/local/lib/node_modules
|
|
13
|
+
|
|
14
|
+
# Default arguments will always be bash -l, if nothing follows this just start an non login interactive shell
|
|
15
|
+
if [ -z "${@:3}" ]; then
|
|
16
|
+
exec su node
|
|
17
|
+
# Otherwise pipe the command after the bash -lc into the non login non interactive shell as a command to exec
|
|
18
|
+
else
|
|
19
|
+
exec su node -c "${@:3}"
|
|
20
|
+
fi
|
|
21
|
+
else
|
|
22
|
+
echo "Accessing as root"
|
|
23
|
+
exec "$@"
|
|
24
|
+
fi
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "core",
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "lab-env docker config for the @fishawack/core/1 npm module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"setup": "ln -sfn ../../.commitlintrc.json .commitlintrc.json && ln -sfn ../../.editorconfig .editorconfig && ln -sfn ../../.prettierignore .prettierignore && ln -sfn ../../.husky/ .husky && husky &>/dev/null || true",
|
|
7
|
+
"image": "docker buildx build --ssh default --platform linux/amd64,linux/arm64 -t fishawack/lab-env-core-1:$npm_package_version -t fishawack/lab-env-core-1:latest --push . && docker buildx build --ssh default --target alpine --platform linux/amd64,linux/arm64 -t fishawack/lab-env-core-1-alpine:$npm_package_version -t fishawack/lab-env-core-1-alpine:latest --push ."
|
|
8
|
+
},
|
|
9
|
+
"author": "Mike Mellor",
|
|
10
|
+
"license": "ISC",
|
|
11
|
+
"release": {
|
|
12
|
+
"plugins": [
|
|
13
|
+
[
|
|
14
|
+
"@semantic-release/commit-analyzer",
|
|
15
|
+
{
|
|
16
|
+
"preset": "conventionalcommits"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"@semantic-release/release-notes-generator",
|
|
21
|
+
{
|
|
22
|
+
"preset": "conventionalcommits",
|
|
23
|
+
"writerOpts": {
|
|
24
|
+
"headerPartial": "### {{version}} ({{date}})\n",
|
|
25
|
+
"mainTemplate": "{{> header}}\n{{#each commitGroups}}\n\n{{#if title}}\n#### {{title}}\n\n{{/if}}\n{{#each commits}}\n{{> commit root=@root}}\n{{/each}}\n{{/each}}"
|
|
26
|
+
},
|
|
27
|
+
"presetConfig": {
|
|
28
|
+
"commitUrlFormat": "{{host}}/{{owner}}/{{repository}}/commits/{{hash}}"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
[
|
|
33
|
+
"@semantic-release/changelog",
|
|
34
|
+
{
|
|
35
|
+
"changelogTitle": "## Changelog"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
"@semantic-release/npm",
|
|
40
|
+
{
|
|
41
|
+
"npmPublish": false
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"@semantic-release/git"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
package/globals.js
CHANGED