2
2
3
3
// terminal command: node scripts/copy-govuk-assets.js
4
4
5
- import fs from 'fs' ;
6
- import { dirname , join } from ' path' ;
7
- import { fileURLToPath } from ' url' ;
5
+ import fs from "fs" ;
6
+ import { dirname , join } from " path" ;
7
+ import { fileURLToPath } from " url" ;
8
8
9
9
const __filename = fileURLToPath ( import . meta. url ) ;
10
10
const __dirname = dirname ( __filename ) ;
11
- const projectRoot = join ( __dirname , '..' ) ;
11
+ const projectRoot = join ( __dirname , ".." ) ;
12
12
13
13
// Add components directory
14
14
const dirs = [
15
- join ( projectRoot , ' static/assets' ) ,
16
- join ( projectRoot , ' static/assets/images' ) ,
17
- join ( projectRoot , ' static/assets/fonts' ) ,
18
- join ( projectRoot , ' static/css' ) ,
19
- join ( projectRoot , ' static/js' ) ,
20
- join ( projectRoot , ' src/lib/components/js/components' )
15
+ join ( projectRoot , " static/assets" ) ,
16
+ join ( projectRoot , " static/assets/images" ) ,
17
+ join ( projectRoot , " static/assets/fonts" ) ,
18
+ join ( projectRoot , " static/css" ) ,
19
+ join ( projectRoot , " static/js" ) ,
20
+ join ( projectRoot , " src/lib/components/js/components" ) ,
21
21
] ;
22
22
23
- dirs . forEach ( dir => {
24
- if ( ! fs . existsSync ( dir ) ) {
25
- fs . mkdirSync ( dir , { recursive : true } ) ;
26
- console . log ( `Created directory: ${ dir } ` ) ;
27
- }
23
+ dirs . forEach ( ( dir ) => {
24
+ if ( ! fs . existsSync ( dir ) ) {
25
+ fs . mkdirSync ( dir , { recursive : true } ) ;
26
+ console . log ( `Created directory: ${ dir } ` ) ;
27
+ }
28
28
} ) ;
29
29
30
30
// Source paths
31
- const govukPath = join ( projectRoot , 'node_modules/govuk-frontend/dist/govuk' ) ;
31
+ const govukPath = join ( projectRoot , "node_modules/govuk-frontend/dist/govuk" ) ;
32
+ const mojPath = join ( projectRoot , "node_modules/@ministryofjustice/frontend" ) ;
32
33
33
34
// Copy function
34
35
function copyDir ( src , dest ) {
35
- if ( fs . existsSync ( src ) ) {
36
- fs . cpSync ( src , dest , { recursive : true } ) ;
37
- console . log ( `Copied ${ src } to ${ dest } ` ) ;
38
- } else {
39
- console . warn ( `Source directory not found: ${ src } ` ) ;
40
- }
36
+ if ( fs . existsSync ( src ) ) {
37
+ fs . cpSync ( src , dest , { recursive : true } ) ;
38
+ console . log ( `Copied ${ src } to ${ dest } ` ) ;
39
+ } else {
40
+ console . warn ( `Source directory not found: ${ src } ` ) ;
41
+ }
41
42
}
42
43
43
44
// Copy manifest.json
44
- const manifestSrc = join ( govukPath , ' assets/manifest.json' ) ;
45
- const manifestDest = join ( projectRoot , ' static/assets/manifest.json' ) ;
45
+ const manifestSrc = join ( govukPath , " assets/manifest.json" ) ;
46
+ const manifestDest = join ( projectRoot , " static/assets/manifest.json" ) ;
46
47
if ( fs . existsSync ( manifestSrc ) ) {
47
- fs . copyFileSync ( manifestSrc , manifestDest ) ;
48
- console . log ( `Copied manifest.json to ${ manifestDest } ` ) ;
48
+ fs . copyFileSync ( manifestSrc , manifestDest ) ;
49
+ console . log ( `Copied manifest.json to ${ manifestDest } ` ) ;
49
50
} else {
50
- console . warn ( `manifest.json not found at ${ manifestSrc } ` ) ;
51
+ console . warn ( `manifest.json not found at ${ manifestSrc } ` ) ;
51
52
}
52
53
53
54
// Copy images
54
55
copyDir (
55
- join ( govukPath , ' assets/images' ) ,
56
- join ( projectRoot , ' static/assets/images' )
56
+ join ( govukPath , " assets/images" ) ,
57
+ join ( projectRoot , " static/assets/images" ) ,
57
58
) ;
58
59
59
60
// Copy fonts
60
61
copyDir (
61
- join ( govukPath , ' assets/fonts' ) ,
62
- join ( projectRoot , ' static/assets/fonts' )
62
+ join ( govukPath , " assets/fonts" ) ,
63
+ join ( projectRoot , " static/assets/fonts" ) ,
63
64
) ;
64
65
65
- // Copy CSS
66
- const cssSrc = join ( govukPath , 'govuk-frontend.min.css' ) ;
67
- const cssDest = join ( projectRoot , 'static/css/govuk-frontend.min.css' ) ;
68
- if ( fs . existsSync ( cssSrc ) ) {
69
- fs . copyFileSync ( cssSrc , cssDest ) ;
70
- console . log ( `Copied CSS to ${ cssDest } ` ) ;
66
+ // Copy GOVUK CSS to BOTH locations
67
+ const govukCssSrc = join ( govukPath , "govuk-frontend.min.css" ) ;
68
+ const govukCssDestStatic = join (
69
+ projectRoot ,
70
+ "static/css/govuk-frontend.min.css" ,
71
+ ) ;
72
+ const govukCssDestLib = join (
73
+ projectRoot ,
74
+ "src/lib/styles/vendor/govuk-frontend.min.css" ,
75
+ ) ;
76
+
77
+ if ( fs . existsSync ( govukCssSrc ) ) {
78
+ // Ensure static destination directory exists
79
+ fs . mkdirSync ( dirname ( govukCssDestStatic ) , { recursive : true } ) ;
80
+ fs . copyFileSync ( govukCssSrc , govukCssDestStatic ) ;
81
+ console . log ( `Copied GOVUK CSS to ${ govukCssDestStatic } ` ) ;
82
+
83
+ // Ensure lib destination directory exists
84
+ fs . mkdirSync ( dirname ( govukCssDestLib ) , { recursive : true } ) ;
85
+ fs . copyFileSync ( govukCssSrc , govukCssDestLib ) ;
86
+ console . log ( `Copied GOVUK CSS to ${ govukCssDestLib } ` ) ;
87
+ } else {
88
+ console . warn ( `GOVUK CSS file not found at ${ govukCssSrc } ` ) ;
89
+ }
90
+
91
+ // Copy MOJ CSS to BOTH locations
92
+ const mojCssSrc = join ( mojPath , "moj/moj-frontend.min.css" ) ;
93
+ const mojCssDestStatic = join ( projectRoot , "static/css/moj-frontend.min.css" ) ;
94
+ const mojCssDestLib = join (
95
+ projectRoot ,
96
+ "src/lib/styles/vendor/moj-frontend.min.css" ,
97
+ ) ;
98
+
99
+ if ( fs . existsSync ( mojCssSrc ) ) {
100
+ // Ensure static destination directory exists
101
+ fs . mkdirSync ( dirname ( mojCssDestStatic ) , { recursive : true } ) ;
102
+ fs . copyFileSync ( mojCssSrc , mojCssDestStatic ) ;
103
+ console . log ( `Copied MOJ CSS to ${ mojCssDestStatic } ` ) ;
104
+
105
+ // Ensure lib destination directory exists
106
+ fs . mkdirSync ( dirname ( mojCssDestLib ) , { recursive : true } ) ;
107
+ fs . copyFileSync ( mojCssSrc , mojCssDestLib ) ;
108
+ console . log ( `Copied MOJ CSS to ${ mojCssDestLib } ` ) ;
71
109
} else {
72
- console . warn ( `CSS file not found at ${ cssSrc } ` ) ;
110
+ console . warn ( `MOJ CSS file not found at ${ mojCssSrc } ` ) ;
111
+ console . warn (
112
+ `Please check the path in node_modules/@ministryofjustice/frontend` ,
113
+ ) ;
73
114
}
74
115
75
116
// Copy JavaScript
76
- const jsSrc = join ( govukPath , ' govuk-frontend.min.js' ) ;
77
- const jsDest = join ( projectRoot , ' static/js/govuk-frontend.min.js' ) ;
117
+ const jsSrc = join ( govukPath , " govuk-frontend.min.js" ) ;
118
+ const jsDest = join ( projectRoot , " static/js/govuk-frontend.min.js" ) ;
78
119
if ( fs . existsSync ( jsSrc ) ) {
79
- fs . copyFileSync ( jsSrc , jsDest ) ;
80
- console . log ( `Copied JavaScript to ${ jsDest } ` ) ;
120
+ fs . copyFileSync ( jsSrc , jsDest ) ;
121
+ console . log ( `Copied JavaScript to ${ jsDest } ` ) ;
81
122
} else {
82
- console . warn ( `JavaScript file not found at ${ jsSrc } ` ) ;
123
+ console . warn ( `JavaScript file not found at ${ jsSrc } ` ) ;
83
124
}
84
125
85
- console . log ( ' GOV.UK Frontend assets copy process completed!' ) ;
126
+ console . log ( " GOV.UK Frontend assets copy process completed!" ) ;
0 commit comments