@@ -4,7 +4,6 @@ const path = require("path");
4
4
const chalk = require ( "chalk" ) ;
5
5
const langsList = require ( "./countries.json" ) ;
6
6
const prompts = require ( "prompts" ) ;
7
- // const semver = require("semver");
8
7
const fuzzy = require ( "fuzzy" ) ;
9
8
const ora = require ( "ora" ) ;
10
9
const { extract } = require ( "pacote" ) ;
@@ -14,14 +13,15 @@ const os = require("os");
14
13
const packageName = "html5-boilerplate" ;
15
14
const tempDir = os . tmpdir ( ) + `/${ packageName } -staging` ;
16
15
const elapsed = require ( "elapsed-time-logger" ) ;
16
+ const compareVersions = require ( "compare-versions" ) ;
17
17
let spinner ;
18
18
19
19
module . exports = async ( argvs ) => {
20
20
const argv = yargs_parser ( argvs , {
21
21
alias : { release : [ "r" ] , yes : [ "y" ] } ,
22
22
} ) ;
23
23
const timer = elapsed . start ( ) ;
24
- const version = argv [ "release" ] || "latest" ;
24
+ const version = ( argv [ "release" ] || "latest" ) . toString ( ) ;
25
25
const targetDir = path . resolve ( argv [ "_" ] [ 0 ] || "./" ) ;
26
26
spinner = ora (
27
27
`Downloading ${ packageName } version '${ version } ' to ${ targetDir } `
@@ -73,8 +73,10 @@ const onLoad = async (targetDir, version, argv) => {
73
73
return { title : `${ v . title } (${ v . value } )` , value : v . value } ;
74
74
} ) ;
75
75
langListOut . splice ( 1 , 0 , { title : "Enter custom" , value : "custom" } ) ;
76
- const questions = [
77
- {
76
+ let lang = argv . lang ;
77
+ /* istanbul ignore if */
78
+ if ( ! lang ) {
79
+ let { langChoice } = await prompts ( {
78
80
type : "autocomplete" ,
79
81
name : "langChoice" ,
80
82
message : "Select language" ,
@@ -84,12 +86,7 @@ const onLoad = async (targetDir, version, argv) => {
84
86
. filter ( input , choices , { extract : ( el ) => el . title } )
85
87
. map ( ( v ) => v . original ) ;
86
88
} ,
87
- } ,
88
- ] ;
89
- let lang = argv . lang ;
90
- /* istanbul ignore if */
91
- if ( ! lang ) {
92
- let { langChoice } = await prompts ( questions ) ;
89
+ } ) ;
93
90
if ( langChoice === "custom" ) {
94
91
let { customLang } = await prompts ( {
95
92
type : "text" ,
@@ -100,13 +97,31 @@ const onLoad = async (targetDir, version, argv) => {
100
97
}
101
98
lang = langChoice || "" ;
102
99
}
100
+ const isJqueryIncluded =
101
+ version !== "latest" && compareVersions ( version , "8.0.0" ) ; // jQuery removed in >= v8
102
+ let removeJqueryFlag = false ;
103
+ if ( isJqueryIncluded ) {
104
+ let { removeJquery } = await prompts ( {
105
+ type : "confirm" ,
106
+ name : "removeJquery" ,
107
+ message : "Remove jQuery?" ,
108
+ initial : true ,
109
+ } ) ;
110
+ removeJqueryFlag = removeJquery ;
111
+ }
103
112
try {
104
113
const indexFile = targetDir + "/index.html" ;
105
114
const sourceHTML = await fs . readFile ( indexFile , "utf-8" ) ;
106
- const resultHTML = sourceHTML . replace (
115
+ let resultHTML = sourceHTML . replace (
107
116
/ ( < h t m l .* l a n g = ) \" ( [ ^ " ] * ) \" / gi,
108
117
`$1"${ lang } "`
109
118
) ;
119
+ if ( removeJqueryFlag ) {
120
+ resultHTML = resultHTML . replace (
121
+ / ( < s c r i p t > w i n d o w \. j Q u e r y .* < \/ s c r i p t > | < s c r i p t s r c = " .* j q u e r y .* < \/ s c r i p t > ) / gi,
122
+ ""
123
+ ) ;
124
+ }
110
125
await fs . writeFile ( indexFile , resultHTML ) ;
111
126
} catch ( err ) {
112
127
/* istanbul ignore next */
0 commit comments