Use jszip on package script
This commit is contained in:
parent
5613aaffb1
commit
5dd5bbbd3c
3 changed files with 40 additions and 22 deletions
|
@ -4,7 +4,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "webpack --mode development -w --debug --devtool inline-source-map",
|
"start": "webpack --mode development -w --debug --devtool inline-source-map",
|
||||||
"build": "NODE_ENV=production webpack --mode production --progress --display-error-details",
|
"build": "NODE_ENV=production webpack --mode production --progress --display-error-details",
|
||||||
"package": "npm run build && script/package.sh",
|
"package": "npm run build && script/package",
|
||||||
"lint": "eslint --ext .jsx,.js src",
|
"lint": "eslint --ext .jsx,.js src",
|
||||||
"test": "karma start",
|
"test": "karma start",
|
||||||
"test:e2e": "mocha --timeout 8000 e2e"
|
"test:e2e": "mocha --timeout 8000 e2e"
|
||||||
|
|
39
script/package
Executable file
39
script/package
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const manifest = require('../manifest');
|
||||||
|
const JSZip = require('jszip');
|
||||||
|
|
||||||
|
const resources = () => {
|
||||||
|
return [
|
||||||
|
'manifest.json',
|
||||||
|
'resources/disabled_32x32.png',
|
||||||
|
'resources/enabled_32x32.png',
|
||||||
|
manifest.options_ui.page,
|
||||||
|
'build/settings.js',
|
||||||
|
].concat(
|
||||||
|
Object.values(manifest.icons),
|
||||||
|
manifest.background.scripts,
|
||||||
|
manifest.content_scripts.map(cs => cs.js).reduce((a1, a2) => a1.concat(a2), []),
|
||||||
|
manifest.web_accessible_resources,
|
||||||
|
).sort();
|
||||||
|
};
|
||||||
|
|
||||||
|
const output = `vim-vixen-${manifest.version}.zip`
|
||||||
|
|
||||||
|
let basedir = path.join(__dirname, '..');
|
||||||
|
let zip = new JSZip();
|
||||||
|
|
||||||
|
for (let r of resources()) {
|
||||||
|
console.log(` adding: ${r}`)
|
||||||
|
let data = fs.readFileSync(path.join(basedir, r));
|
||||||
|
zip.file(r, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
zip
|
||||||
|
.generateNodeStream({ type: 'nodebuffer', streamFiles: true })
|
||||||
|
.pipe(fs.createWriteStream(output))
|
||||||
|
.on('finish', function () {
|
||||||
|
console.log(`${output} created`);
|
||||||
|
});
|
|
@ -1,21 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
MANIFEST="manifest.json"
|
|
||||||
|
|
||||||
version=$(jq -r '.version' $MANIFEST)
|
|
||||||
|
|
||||||
icons=$(jq -r '.icons[]' $MANIFEST)
|
|
||||||
toolbar_icons="resources/disabled_32x32.png resources/enabled_32x32.png"
|
|
||||||
content_scripts=$(jq -r '.content_scripts[].js[]' $MANIFEST)
|
|
||||||
background_scripts=$(jq -r '.background.scripts[]' $MANIFEST)
|
|
||||||
web_accessible_resources=$(jq -r '.web_accessible_resources[]' $MANIFEST)
|
|
||||||
options_ui=$(jq -r '.options_ui.page' $MANIFEST)
|
|
||||||
options_scripts=""
|
|
||||||
for html in $options_ui; do
|
|
||||||
scripts=$(grep -Po "(?<=src=['\"])[^'\"]*" "$html")
|
|
||||||
for js in $scripts; do
|
|
||||||
options_scripts="$options_scripts $(dirname $html)/$js"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
zip ${version}.zip $MANIFEST $icons $toolbar_icons $content_scripts $background_scripts $web_accessible_resources $options_ui $options_scripts
|
|
Reference in a new issue