File tree 2 files changed +16
-3
lines changed
2 files changed +16
-3
lines changed Original file line number Diff line number Diff line change 38
38
"description" : " Directory where app files are placed." ,
39
39
"default" : " app"
40
40
},
41
+ "allowAssetsOutsideOutDir" : {
42
+ "type" : " boolean" ,
43
+ "description" : " Allow assets to be copied outside the outDir." ,
44
+ "default" : false
45
+ }
41
46
"root" : {
42
47
"type" : " string" ,
43
48
"description" : " The root directory of the app."
Original file line number Diff line number Diff line change @@ -95,12 +95,20 @@ export function getCommonConfig(wco: WebpackConfigOptions) {
95
95
asset . output = asset . output || '' ;
96
96
asset . glob = asset . glob || '' ;
97
97
98
- // Prevent asset configurations from writing outside of the output path
98
+ // Prevent asset configurations from writing outside of the output path, except if the user
99
+ // specify a configuration flag.
100
+ // Also prevent writing outside the project path. That is not overridable.
99
101
const fullOutputPath = path . resolve ( buildOptions . outputPath , asset . output ) ;
100
- if ( ! fullOutputPath . startsWith ( path . resolve ( buildOptions . outputPath ) ) ) {
101
- const message = 'An asset cannot be written to a location outside of the output path .' ;
102
+ if ( ! fullOutputPath . startsWith ( projectRoot ) ) {
103
+ const message = 'An asset cannot be written to a location outside the project .' ;
102
104
throw new SilentError ( message ) ;
103
105
}
106
+ if ( ! fullOutputPath . startsWith ( path . resolve ( buildOptions . outputPath ) ) ) {
107
+ if ( ! appConfig . allowAssetsOutsideOutDir ) {
108
+ const message = 'An asset cannot be written to a location outside of the output path.' ;
109
+ throw new SilentError ( message ) ;
110
+ }
111
+ }
104
112
105
113
// Ensure trailing slash.
106
114
if ( isDirectory ( path . resolve ( asset . input ) ) ) {
You can’t perform that action at this time.
0 commit comments