@@ -4,10 +4,47 @@ import fs from 'fs'
4
4
import path from 'path'
5
5
import isGlob from 'is-glob'
6
6
import fastGlob from 'fast-glob'
7
- import normalizePath from 'normalize-path'
8
7
import { parseGlob } from '../util/parseGlob'
9
8
import { env } from './sharedState'
10
9
10
+ /*!
11
+ * Modified version of normalize-path, original license below
12
+ *
13
+ * normalize-path <https://github.com/jonschlinkert/normalize-path>
14
+ *
15
+ * Copyright (c) 2014-2018, Jon Schlinkert.
16
+ * Released under the MIT License.
17
+ */
18
+
19
+ function normalizePath ( path ) {
20
+ if ( typeof path !== 'string' ) {
21
+ throw new TypeError ( 'expected path to be a string' )
22
+ }
23
+
24
+ if ( path === '\\' || path === '/' ) return '/'
25
+
26
+ var len = path . length
27
+ if ( len <= 1 ) return path
28
+
29
+ // ensure that win32 namespaces has two leading slashes, so that the path is
30
+ // handled properly by the win32 version of path.parse() after being normalized
31
+ // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
32
+ var prefix = ''
33
+ if ( len > 4 && path [ 3 ] === '\\' ) {
34
+ var ch = path [ 2 ]
35
+ if ( ( ch === '?' || ch === '.' ) && path . slice ( 0 , 2 ) === '\\\\' ) {
36
+ path = path . slice ( 2 )
37
+ prefix = '//'
38
+ }
39
+ }
40
+
41
+ // Modified part: instead of purely splitting on `\\` and `/`, we split on
42
+ // `/` and `\\` that is _not_ followed by any of the following characters: ()[]
43
+ // This is to ensure that we keep the escaping of brackets and parentheses
44
+ let segs = path . split ( / [ / \\ ] + (? ! [ \( \) \[ \] ] ) / )
45
+ return prefix + segs . join ( '/' )
46
+ }
47
+
11
48
/** @typedef {import('../../types/config.js').RawFile } RawFile */
12
49
/** @typedef {import('../../types/config.js').FilePath } FilePath */
13
50
@@ -73,6 +110,10 @@ export function parseCandidateFiles(context, tailwindConfig) {
73
110
* @returns {ContentPath }
74
111
*/
75
112
function parseFilePath ( filePath , ignore ) {
113
+ // Escape special characters in the file path such as: ()[]
114
+ // But only if the special character isn't already escaped
115
+ filePath = filePath . replace ( / (?< ! \\ ) ( [ \[ \] \( \) ] ) / g, '\\$1' )
116
+
76
117
let contentPath = {
77
118
original : filePath ,
78
119
base : filePath ,
0 commit comments