cleanup webpack config, remove useless bits, less plugins
This commit is contained in:
parent
7b637563b5
commit
08d316a1de
15
build
15
build
|
@ -5,12 +5,11 @@ from subprocess import check_call
|
|||
from pathlib import Path
|
||||
|
||||
|
||||
TARGETS = ['chrome', 'firefox']
|
||||
# TODO FIXME copypaste from promnesia
|
||||
# TODO FIXME use it in ci script
|
||||
TARGETS = ['chrome', 'firefox']
|
||||
def main():
|
||||
p = argparse.ArgumentParser()
|
||||
# TODO rename to --production??
|
||||
p.add_argument('--release', action='store_true')
|
||||
p.add_argument('--sign', action='store_true')
|
||||
p.add_argument('--lint', action='store_true')
|
||||
|
@ -22,6 +21,7 @@ def main():
|
|||
args = p.parse_args()
|
||||
target = args.target
|
||||
|
||||
assert target is not None
|
||||
|
||||
dist_dir = Path(__file__).absolute().parent / 'dist'
|
||||
def webext(*args, **kwargs):
|
||||
|
@ -33,10 +33,9 @@ def main():
|
|||
*args,
|
||||
], **kwargs)
|
||||
|
||||
maybe_release = {'NODE_ENV': 'production'} if args.release else {}
|
||||
env = {
|
||||
'TARGET': target,
|
||||
**maybe_release,
|
||||
'RELEASE': 'YES' if args.release else 'NO',
|
||||
**os.environ,
|
||||
}
|
||||
check_call([
|
||||
|
@ -56,11 +55,12 @@ def main():
|
|||
if target not in ['firefox', 'firefox-mobile']:
|
||||
raise RuntimeError("{target} is not supported for signing yet".format(target=target))
|
||||
|
||||
dist_dir = Path(__file__).absolute().parent / 'dist'
|
||||
src_dir = dist_dir / target
|
||||
|
||||
from firefox_dev_secrets import API_KEY, API_SECRET
|
||||
webext(
|
||||
# TODO use UUID? https://addons.mozilla.org/en-GB/developers/addon/grasp/edit
|
||||
# TODO right, wouldn't work because it's listed..
|
||||
'--source-dir' , str(src_dir),
|
||||
'--artifacts-dir', str(dist_dir),
|
||||
'--api-key' , API_KEY,
|
||||
'--api-secret', API_SECRET,
|
||||
|
@ -69,3 +69,6 @@ def main():
|
|||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
# TODO use UUID? https://addons.mozilla.org/en-GB/developers/addon/grasp/edit
|
||||
# TODO right, wouldn't work because it's listed..
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
var webpack = require("webpack"),
|
||||
config = require("../webpack.config");
|
||||
|
||||
delete config.chromeExtensionBoilerplate;
|
||||
|
||||
webpack(
|
||||
config,
|
||||
function (err) { if (err) throw err; }
|
||||
);
|
|
@ -1,6 +0,0 @@
|
|||
// tiny wrapper with default env vars
|
||||
module.exports = {
|
||||
NODE_ENV: (process.env.NODE_ENV || "development"),
|
||||
PORT: (process.env.PORT || 3000),
|
||||
TARGET: (process.env.TARGET || 'chrome'),
|
||||
};
|
|
@ -1,34 +0,0 @@
|
|||
var WebpackDevServer = require("webpack-dev-server"),
|
||||
webpack = require("webpack"),
|
||||
config = require("../webpack.config"),
|
||||
env = require("./env"),
|
||||
path = require("path");
|
||||
|
||||
var options = (config.chromeExtensionBoilerplate || {});
|
||||
var excludeEntriesToHotReload = (options.notHotReload || []);
|
||||
|
||||
for (var entryName in config.entry) {
|
||||
if (excludeEntriesToHotReload.indexOf(entryName) === -1) {
|
||||
config.entry[entryName] =
|
||||
[
|
||||
("webpack-dev-server/client?http://localhost:" + env.PORT),
|
||||
"webpack/hot/dev-server"
|
||||
].concat(config.entry[entryName]);
|
||||
}
|
||||
}
|
||||
|
||||
config.plugins =
|
||||
[new webpack.HotModuleReplacementPlugin()].concat(config.plugins || []);
|
||||
|
||||
delete config.chromeExtensionBoilerplate;
|
||||
|
||||
var compiler = webpack(config);
|
||||
|
||||
var server =
|
||||
new WebpackDevServer(compiler, {
|
||||
hot: true,
|
||||
contentBase: path.join(__dirname, "../build"),
|
||||
headers: { "Access-Control-Allow-Origin": "*" }
|
||||
});
|
||||
|
||||
server.listen(env.PORT);
|
|
@ -1,33 +1,33 @@
|
|||
var webpack = require("webpack"),
|
||||
path = require("path"),
|
||||
fileSystem = require("fs"),
|
||||
env = require("./utils/env"),
|
||||
CleanWebpackPlugin = require("clean-webpack-plugin"),
|
||||
CopyWebpackPlugin = require("copy-webpack-plugin"),
|
||||
HtmlWebpackPlugin = require("html-webpack-plugin"),
|
||||
WriteFilePlugin = require("write-file-webpack-plugin"),
|
||||
WebpackExtensionManifestPlugin = require("webpack-extension-manifest-plugin");
|
||||
const webpack = require('webpack'),
|
||||
path = require('path'),
|
||||
CleanWebpackPlugin = require('clean-webpack-plugin'),
|
||||
CopyWebpackPlugin = require('copy-webpack-plugin'),
|
||||
WebpackExtensionManifestPlugin = require('webpack-extension-manifest-plugin'),
|
||||
HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||
// TODO remove plugins from package.json
|
||||
|
||||
const T = {
|
||||
CHROME : 'chrome',
|
||||
FIREFOX: 'firefox',
|
||||
};
|
||||
|
||||
const env = {
|
||||
TARGET : process.env.TARGET, // TODO assert not null?
|
||||
RELEASE: process.env.RELEASE,
|
||||
};
|
||||
|
||||
const pkg = require('./package.json');
|
||||
const baseManifest = require('./src/manifest.json');
|
||||
|
||||
const release = env.RELEASE == 'YES' ? true : false;
|
||||
const dev = !release; // meh. maybe make up my mind?
|
||||
const target = env.TARGET;
|
||||
const dev = env.NODE_ENV === "development";
|
||||
|
||||
const pkg_name = "grasp" + (dev ? ' [dev]' : '');
|
||||
|
||||
// TODO make permissions literate
|
||||
const permissions = [
|
||||
"storage",
|
||||
"notifications",
|
||||
"activeTab",
|
||||
"http://localhost/capture",
|
||||
"https://localhost/capture"
|
||||
];
|
||||
const name = "grasp" + (dev ? ' [dev]' : '');
|
||||
|
||||
// Firefox wouldn't let you rebind its default shortcuts most of which use Shift
|
||||
// On the other hand, Chrome wouldn't let you use Alt
|
||||
const modifier = target === 'chrome' ? 'Shift' : 'Alt';
|
||||
const modifier = target === T.CHROME ? 'Shift' : 'Alt';
|
||||
|
||||
// ugh. declarative formats are shit.
|
||||
const commandsExtra = {
|
||||
|
@ -45,8 +45,18 @@ const commandsExtra = {
|
|||
},
|
||||
};
|
||||
|
||||
// TODO make permissions literate
|
||||
const permissions = [
|
||||
"storage",
|
||||
"notifications",
|
||||
"activeTab",
|
||||
"http://localhost/capture",
|
||||
"https://localhost/capture"
|
||||
];
|
||||
|
||||
|
||||
const manifestExtra = {
|
||||
name: pkg_name,
|
||||
name: name,
|
||||
version: pkg.version,
|
||||
description: pkg.description,
|
||||
permissions: permissions,
|
||||
|
@ -61,32 +71,23 @@ if (dev) {
|
|||
manifestExtra.content_security_policy = "script-src 'self' 'unsafe-eval'; object-src 'self'";
|
||||
}
|
||||
|
||||
if (target === 'chrome') {
|
||||
if (target === T.CHROME) {
|
||||
manifestExtra.options_ui = {chrome_style: true};
|
||||
}
|
||||
if (target === 'firefox') {
|
||||
if (target === T.FIREFOX) {
|
||||
manifestExtra.options_ui = {browser_style: true};
|
||||
manifestExtra.browser_action = {browser_style: true};
|
||||
}
|
||||
|
||||
// load the secrets
|
||||
var alias = {};
|
||||
|
||||
var secretsPath = path.join(__dirname, ("secrets." + env.NODE_ENV + ".js"));
|
||||
|
||||
var fileExtensions = ["jpg", "jpeg", "png", "gif", "eot", "otf", "svg", "ttf", "woff", "woff2"];
|
||||
|
||||
if (fileSystem.existsSync(secretsPath)) {
|
||||
alias["secrets"] = secretsPath;
|
||||
}
|
||||
|
||||
const build_path = path.join(__dirname, "dist"); // TODO target??
|
||||
|
||||
var options = {
|
||||
mode: 'production',
|
||||
mode: 'production', // TODO eh??
|
||||
optimization: {
|
||||
// https://webpack.js.org/configuration/optimization
|
||||
// don't thing minimize worth it for suck a tiny extension
|
||||
// don't think minimize worth it for such a tiny extension
|
||||
minimize: false
|
||||
},
|
||||
entry: {
|
||||
|
@ -125,11 +126,7 @@ var options = {
|
|||
}
|
||||
]
|
||||
},
|
||||
resolve: {
|
||||
alias: alias
|
||||
},
|
||||
plugins: [
|
||||
// clean the build folder
|
||||
new CleanWebpackPlugin([build_path + "/*"]),
|
||||
new CopyWebpackPlugin([
|
||||
{ from: 'src/img/*.png', flatten: true },
|
||||
|
@ -159,12 +156,11 @@ var options = {
|
|||
filename: "background.html",
|
||||
chunks: ["background"]
|
||||
}),
|
||||
new WriteFilePlugin()
|
||||
]
|
||||
};
|
||||
|
||||
// TODO https://webpack.js.org/configuration/devtool
|
||||
if (env.NODE_ENV === "development") {
|
||||
if (dev) {
|
||||
options.devtool = "cheap-module-eval-source-map";
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue