Skip to content

Commit 8263635

Browse files
committed
feat: S3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS option
1 parent a473353 commit 8263635

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ Parameters can either be passed in the command line as arguments or as environme
8080
<td>The directory of an S3 bucket to sync from a local directory. An empty string signifies the root.</td>
8181
<td><code>''</code></td>
8282
</tr>
83+
<tr>
84+
<td><code>S3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS/code></td>
85+
<td>If <code>true</code> HTML files will be uploaded with the `.html` extension omitted from the `Key`. This can be helpful if hosting an S3 website.</td>
86+
<td><code>false</code></td>
87+
</tr>
8388
<tr>
8489
<td><code>S3_DIRECTORY_SYNC_ACL</code></td>
8590
<td>The <a href="https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html">Access Control Policy</a> as documented.</td>

src/bin/sync.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,17 @@ const defaultOptions = {
1919
S3_DIRECTORY_SYNC_ACL: process.env.S3_DIRECTORY_SYNC_ACL || 'public-read',
2020
S3_DIRECTORY_SYNC_BUCKET: process.env.S3_DIRECTORY_SYNC_BUCKET,
2121
S3_DIRECTORY_SYNC_DERIVE_CONTENT_TYPE:
22-
typeof process.env.S3_DIRECTORY_SYNC_DERIVE_CONTENT_TYPE === 'undefined'
23-
? true
24-
: process.env.S3_DIRECTORY_SYNC_DERIVE_CONTENT_TYPE,
22+
process.env.S3_DIRECTORY_SYNC_DERIVE_CONTENT_TYPE === 'true',
2523
S3_DIRECTORY_SYNC_LOCAL_DIRECTORY:
2624
process.env.S3_DIRECTORY_SYNC_LOCAL_DIRECTORY,
27-
S3_DIRECTORY_SYNC_PROGRESS:
28-
typeof process.env.S3_DIRECTORY_SYNC_PROGRESS === 'undefined'
29-
? true
30-
: process.env.S3_DIRECTORY_SYNC_PROGRESS,
25+
S3_DIRECTORY_SYNC_PROGRESS: process.env.S3_DIRECTORY_SYNC_PROGRESS === 'true',
3126
S3_DIRECTORY_SYNC_REMOTE_DIRECTORY:
3227
process.env.S3_DIRECTORY_SYNC_REMOTE_DIRECTORY || '',
28+
S3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS:
29+
process.env.S3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS === 'true',
3330
S3_DIRECTORY_SYNC_SECRET_ACCESS_KEY:
3431
process.env.S3_DIRECTORY_SYNC_SECRET_ACCESS_KEY,
35-
S3_DIRECTORY_SYNC_STRICT: process.env.S3_DIRECTORY_SYNC_STRICT || false
32+
S3_DIRECTORY_SYNC_STRICT: process.env.S3_DIRECTORY_SYNC_STRICT === 'true'
3633
};
3734

3835
// override options with any that are passed in as arguments
@@ -97,13 +94,17 @@ const rootFolder = path.resolve();
9794
}
9895

9996
for (const [index, file] of filesToUpload.entries()) {
100-
const Key = file.replace(
97+
let Key = file.replace(
10198
`${rootFolder}/${options.S3_DIRECTORY_SYNC_LOCAL_DIRECTORY}/`,
10299
!options.S3_DIRECTORY_SYNC_REMOTE_DIRECTORY
103100
? ''
104101
: `${options.S3_DIRECTORY_SYNC_REMOTE_DIRECTORY}/`
105102
);
106103

104+
if (options.S3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS) {
105+
Key = Key.replace('.html', '');
106+
}
107+
107108
const params = {
108109
ACL: options.S3_DIRECTORY_SYNC_ACL,
109110
Bucket: options.S3_DIRECTORY_SYNC_BUCKET,

0 commit comments

Comments
 (0)