mirror of
https://github.com/shoelace-style/webawesome.git
synced 2026-01-12 12:09:26 +00:00
Add back --s3 option
This commit is contained in:
6
.env.example
Normal file
6
.env.example
Normal file
@@ -0,0 +1,6 @@
|
||||
S3_BUCKET=
|
||||
S3_URL=
|
||||
S3_ACL=
|
||||
S3_REGION=
|
||||
S3_ACCESS_KEY=
|
||||
S3_SECRET_KEY=
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.DS_Store
|
||||
.env
|
||||
.htaccess
|
||||
node_modules/
|
||||
|
||||
48
build.js
48
build.js
@@ -3,6 +3,7 @@
|
||||
|
||||
global.__version = require('./package.json').version;
|
||||
|
||||
require('dotenv').config();
|
||||
const Promise = require('bluebird');
|
||||
const AtImport = require('postcss-import');
|
||||
const Chalk = require('chalk');
|
||||
@@ -16,6 +17,7 @@ const Metalsmith = require('metalsmith');
|
||||
const Path = require('path');
|
||||
const PostCSS = require('postcss');
|
||||
const Program = require('commander');
|
||||
const S3 = require('s3');
|
||||
const UglifyJS = require('uglify-js');
|
||||
const Watch = require('watch');
|
||||
|
||||
@@ -163,6 +165,42 @@ function buildStyles() {
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Publishes the dist folder to an S3 bucket.
|
||||
//
|
||||
//
|
||||
//
|
||||
function publishToS3() {
|
||||
return new Promise((resolve, reject) => {
|
||||
const client = S3.createClient({
|
||||
s3Options: {
|
||||
accessKeyId: process.env.S3_ACCESS_KEY,
|
||||
secretAccessKey: process.env.S3_SECRET_KEY
|
||||
}
|
||||
});
|
||||
|
||||
// Sync the local /dist directory to /{version} in the S3 bucket
|
||||
let uploader = client.uploadDir({
|
||||
localDir: Path.join(__dirname, 'dist'),
|
||||
deleteRemoved: true,
|
||||
s3Params: {
|
||||
ACL: process.env.S3_ACL,
|
||||
Prefix: __version,
|
||||
Bucket: process.env.S3_BUCKET
|
||||
}
|
||||
});
|
||||
|
||||
uploader.on('error', (err) => {
|
||||
reject(err);
|
||||
});
|
||||
|
||||
uploader.on('end', () => {
|
||||
console.log(Chalk.green('%s has been published to S3! ☁️'), __version);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Watches a directory for changes
|
||||
//
|
||||
@@ -197,6 +235,7 @@ Program
|
||||
.version(__version)
|
||||
.option('--build', 'Builds a release')
|
||||
.option('--clean', 'Removes existing release')
|
||||
.option('--s3', 'Publish lastest release to an S3 bucket (requires .env)')
|
||||
.option('--watch', 'Watch for changes and build automatically')
|
||||
.on('--help', () => {
|
||||
console.log(Chalk.cyan('\n Version %s\n'), __version);
|
||||
@@ -225,6 +264,9 @@ if(Program.build) {
|
||||
// Generate docs
|
||||
.then(() => buildDocs())
|
||||
|
||||
// Publish to S3 if --s3 flag is set
|
||||
.then(() => Program.s3 ? publishToS3() : null)
|
||||
|
||||
// Exit with success
|
||||
.then(() => process.exit(1))
|
||||
|
||||
@@ -233,6 +275,12 @@ if(Program.build) {
|
||||
console.error(Chalk.red(err));
|
||||
process.exit(-1);
|
||||
});
|
||||
} else {
|
||||
// Can't use the --s3 options without --build
|
||||
if(Program.s3) {
|
||||
console.error(Chalk.yellow('The --s3 flag can only be used with --build'));
|
||||
process.exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean
|
||||
|
||||
104
package-lock.json
generated
104
package-lock.json
generated
@@ -185,6 +185,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"aws-sdk": {
|
||||
"version": "2.0.31",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.0.31.tgz",
|
||||
"integrity": "sha1-5yzx/caQFb2f0r3z07iMFlB9Jo4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"xml2js": "0.2.6",
|
||||
"xmlbuilder": "0.4.2"
|
||||
}
|
||||
},
|
||||
"babel-cli": {
|
||||
"version": "6.24.1",
|
||||
"resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz",
|
||||
@@ -1422,6 +1432,12 @@
|
||||
"repeating": "2.0.1"
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
|
||||
"integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
|
||||
"dev": true
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.16",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz",
|
||||
@@ -1506,6 +1522,15 @@
|
||||
"is-extglob": "1.0.0"
|
||||
}
|
||||
},
|
||||
"fd-slicer": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
|
||||
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pend": "1.2.0"
|
||||
}
|
||||
},
|
||||
"filename-regex": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
|
||||
@@ -1527,6 +1552,12 @@
|
||||
"repeat-string": "1.6.1"
|
||||
}
|
||||
},
|
||||
"findit2": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz",
|
||||
"integrity": "sha1-WKRmaX34piBc39vzlVNri9d3pfY=",
|
||||
"dev": true
|
||||
},
|
||||
"flatten": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
|
||||
@@ -3191,6 +3222,12 @@
|
||||
"regex-cache": "0.4.3"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.2.11",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
|
||||
"integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
|
||||
"dev": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
@@ -3240,6 +3277,12 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"natives": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz",
|
||||
"integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
|
||||
@@ -3381,6 +3424,12 @@
|
||||
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
|
||||
"dev": true
|
||||
},
|
||||
"pend": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
|
||||
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
@@ -5917,12 +5966,46 @@
|
||||
"integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
|
||||
"dev": true
|
||||
},
|
||||
"s3": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/s3/-/s3-4.4.0.tgz",
|
||||
"integrity": "sha1-VqT3dVFae2ucjlxrGrUfkDdmnx8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aws-sdk": "2.0.31",
|
||||
"fd-slicer": "1.0.1",
|
||||
"findit2": "2.2.3",
|
||||
"graceful-fs": "3.0.11",
|
||||
"mime": "1.2.11",
|
||||
"mkdirp": "0.5.1",
|
||||
"pend": "1.2.0",
|
||||
"rimraf": "2.2.8",
|
||||
"streamsink": "1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"graceful-fs": {
|
||||
"version": "3.0.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
|
||||
"integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"natives": "1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
|
||||
"dev": true
|
||||
},
|
||||
"sax": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-0.4.2.tgz",
|
||||
"integrity": "sha1-OfO2AXM9a+yXEFskKipA/Wl4rDw=",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
|
||||
@@ -5987,6 +6070,12 @@
|
||||
"integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
|
||||
"dev": true
|
||||
},
|
||||
"streamsink": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/streamsink/-/streamsink-1.2.0.tgz",
|
||||
"integrity": "sha1-76/unx4i01ke1949yqlcP1559zw=",
|
||||
"dev": true
|
||||
},
|
||||
"strict-uri-encode": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
|
||||
@@ -6250,6 +6339,21 @@
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
},
|
||||
"xml2js": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.6.tgz",
|
||||
"integrity": "sha1-0gnE5N2h/JxFIUHvQcB39a399sQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sax": "0.4.2"
|
||||
}
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.2.tgz",
|
||||
"integrity": "sha1-F3bWXz/brUcKCNhgTN6xxOVA/4M=",
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"commander": "^2.11.0",
|
||||
"cssnano": "^3.10.0",
|
||||
"del": "^3.0.0",
|
||||
"dotenv": "^4.0.0",
|
||||
"fs": "0.0.1-security",
|
||||
"handlebars": "^4.0.10",
|
||||
"metalsmith": "^2.3.0",
|
||||
@@ -24,6 +25,7 @@
|
||||
"postcss": "^6.0.8",
|
||||
"postcss-cssnext": "^3.0.2",
|
||||
"postcss-import": "^10.0.0",
|
||||
"s3": "^4.4.0",
|
||||
"stylelint-config-standard": "^17.0.0",
|
||||
"uglify-js": "^3.0.27",
|
||||
"watch": "^1.0.2"
|
||||
|
||||
Reference in New Issue
Block a user