- Execute
./retrieve.sh
- Install pkg with
npm i -g pkg
npm run build
to build binary- click on the binary if through GUI otherwise , via a command line, do either
./server-static-offline-linux
,./server-static-offline-macos
orserver-static-offline-win.exe
depending of your OS. - open a browser at http://localhost:8081/ to see local website
Last active
September 30, 2021 18:38
-
-
Save ThomasG77/b7a7985ac118ac2440b8cb113eafc852 to your computer and use it in GitHub Desktop.
Play with pkg to bundle offline content in a binary, to serve through local server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
node_modules/ | |
server-static-offline* | |
gh-pages.zip | |
dist/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "runlocal", | |
"version": "1.0.0", | |
"lockfileVersion": 1, | |
"requires": true, | |
"dependencies": { | |
"accepts": { | |
"version": "1.3.7", | |
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", | |
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", | |
"requires": { | |
"mime-types": "~2.1.24", | |
"negotiator": "0.6.2" | |
} | |
}, | |
"array-flatten": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | |
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | |
}, | |
"body-parser": { | |
"version": "1.19.0", | |
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", | |
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", | |
"requires": { | |
"bytes": "3.1.0", | |
"content-type": "~1.0.4", | |
"debug": "2.6.9", | |
"depd": "~1.1.2", | |
"http-errors": "1.7.2", | |
"iconv-lite": "0.4.24", | |
"on-finished": "~2.3.0", | |
"qs": "6.7.0", | |
"raw-body": "2.4.0", | |
"type-is": "~1.6.17" | |
} | |
}, | |
"bytes": { | |
"version": "3.1.0", | |
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | |
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" | |
}, | |
"content-disposition": { | |
"version": "0.5.3", | |
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", | |
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", | |
"requires": { | |
"safe-buffer": "5.1.2" | |
} | |
}, | |
"content-type": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | |
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | |
}, | |
"cookie": { | |
"version": "0.4.0", | |
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", | |
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" | |
}, | |
"cookie-signature": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
}, | |
"debug": { | |
"version": "2.6.9", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | |
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", | |
"requires": { | |
"ms": "2.0.0" | |
} | |
}, | |
"depd": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | |
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" | |
}, | |
"destroy": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | |
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | |
}, | |
"ee-first": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | |
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" | |
}, | |
"encodeurl": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | |
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" | |
}, | |
"escape-html": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | |
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" | |
}, | |
"etag": { | |
"version": "1.8.1", | |
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | |
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | |
}, | |
"express": { | |
"version": "4.17.1", | |
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", | |
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", | |
"requires": { | |
"accepts": "~1.3.7", | |
"array-flatten": "1.1.1", | |
"body-parser": "1.19.0", | |
"content-disposition": "0.5.3", | |
"content-type": "~1.0.4", | |
"cookie": "0.4.0", | |
"cookie-signature": "1.0.6", | |
"debug": "2.6.9", | |
"depd": "~1.1.2", | |
"encodeurl": "~1.0.2", | |
"escape-html": "~1.0.3", | |
"etag": "~1.8.1", | |
"finalhandler": "~1.1.2", | |
"fresh": "0.5.2", | |
"merge-descriptors": "1.0.1", | |
"methods": "~1.1.2", | |
"on-finished": "~2.3.0", | |
"parseurl": "~1.3.3", | |
"path-to-regexp": "0.1.7", | |
"proxy-addr": "~2.0.5", | |
"qs": "6.7.0", | |
"range-parser": "~1.2.1", | |
"safe-buffer": "5.1.2", | |
"send": "0.17.1", | |
"serve-static": "1.14.1", | |
"setprototypeof": "1.1.1", | |
"statuses": "~1.5.0", | |
"type-is": "~1.6.18", | |
"utils-merge": "1.0.1", | |
"vary": "~1.1.2" | |
} | |
}, | |
"finalhandler": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", | |
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", | |
"requires": { | |
"debug": "2.6.9", | |
"encodeurl": "~1.0.2", | |
"escape-html": "~1.0.3", | |
"on-finished": "~2.3.0", | |
"parseurl": "~1.3.3", | |
"statuses": "~1.5.0", | |
"unpipe": "~1.0.0" | |
} | |
}, | |
"forwarded": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | |
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" | |
}, | |
"fresh": { | |
"version": "0.5.2", | |
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | |
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | |
}, | |
"http-errors": { | |
"version": "1.7.2", | |
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", | |
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", | |
"requires": { | |
"depd": "~1.1.2", | |
"inherits": "2.0.3", | |
"setprototypeof": "1.1.1", | |
"statuses": ">= 1.5.0 < 2", | |
"toidentifier": "1.0.0" | |
} | |
}, | |
"iconv-lite": { | |
"version": "0.4.24", | |
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | |
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | |
"requires": { | |
"safer-buffer": ">= 2.1.2 < 3" | |
} | |
}, | |
"inherits": { | |
"version": "2.0.3", | |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | |
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | |
}, | |
"ipaddr.js": { | |
"version": "1.9.1", | |
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | |
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" | |
}, | |
"media-typer": { | |
"version": "0.3.0", | |
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | |
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" | |
}, | |
"merge-descriptors": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | |
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | |
}, | |
"methods": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | |
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | |
}, | |
"mime": { | |
"version": "1.6.0", | |
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | |
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" | |
}, | |
"mime-db": { | |
"version": "1.49.0", | |
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", | |
"integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" | |
}, | |
"mime-types": { | |
"version": "2.1.32", | |
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", | |
"integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", | |
"requires": { | |
"mime-db": "1.49.0" | |
} | |
}, | |
"ms": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | |
}, | |
"negotiator": { | |
"version": "0.6.2", | |
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | |
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" | |
}, | |
"on-finished": { | |
"version": "2.3.0", | |
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | |
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", | |
"requires": { | |
"ee-first": "1.1.1" | |
} | |
}, | |
"parseurl": { | |
"version": "1.3.3", | |
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | |
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" | |
}, | |
"path-to-regexp": { | |
"version": "0.1.7", | |
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | |
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | |
}, | |
"proxy-addr": { | |
"version": "2.0.7", | |
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | |
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", | |
"requires": { | |
"forwarded": "0.2.0", | |
"ipaddr.js": "1.9.1" | |
} | |
}, | |
"qs": { | |
"version": "6.7.0", | |
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", | |
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" | |
}, | |
"range-parser": { | |
"version": "1.2.1", | |
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | |
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" | |
}, | |
"raw-body": { | |
"version": "2.4.0", | |
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", | |
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", | |
"requires": { | |
"bytes": "3.1.0", | |
"http-errors": "1.7.2", | |
"iconv-lite": "0.4.24", | |
"unpipe": "1.0.0" | |
} | |
}, | |
"safe-buffer": { | |
"version": "5.1.2", | |
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | |
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | |
}, | |
"safer-buffer": { | |
"version": "2.1.2", | |
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | |
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | |
}, | |
"send": { | |
"version": "0.17.1", | |
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", | |
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", | |
"requires": { | |
"debug": "2.6.9", | |
"depd": "~1.1.2", | |
"destroy": "~1.0.4", | |
"encodeurl": "~1.0.2", | |
"escape-html": "~1.0.3", | |
"etag": "~1.8.1", | |
"fresh": "0.5.2", | |
"http-errors": "~1.7.2", | |
"mime": "1.6.0", | |
"ms": "2.1.1", | |
"on-finished": "~2.3.0", | |
"range-parser": "~1.2.1", | |
"statuses": "~1.5.0" | |
}, | |
"dependencies": { | |
"ms": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | |
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | |
} | |
} | |
}, | |
"serve-static": { | |
"version": "1.14.1", | |
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", | |
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", | |
"requires": { | |
"encodeurl": "~1.0.2", | |
"escape-html": "~1.0.3", | |
"parseurl": "~1.3.3", | |
"send": "0.17.1" | |
} | |
}, | |
"setprototypeof": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | |
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | |
}, | |
"statuses": { | |
"version": "1.5.0", | |
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | |
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | |
}, | |
"toidentifier": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", | |
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" | |
}, | |
"type-is": { | |
"version": "1.6.18", | |
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | |
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | |
"requires": { | |
"media-typer": "0.3.0", | |
"mime-types": "~2.1.24" | |
} | |
}, | |
"unpipe": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | |
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" | |
}, | |
"utils-merge": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | |
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | |
}, | |
"vary": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | |
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "server-static-offline", | |
"version": "1.0.0", | |
"description": "", | |
"main": "server.js", | |
"dependencies": { | |
"express": "^4.17.1" | |
}, | |
"devDependencies": {}, | |
"bin": "server.js", | |
"pkg": { | |
"assets": [ | |
"dist/**/*" | |
] | |
}, | |
"scripts": { | |
"test": "echo \"Error: no test specified\" && exit 1", | |
"start": "node server.js", | |
"build": "pkg package.json" | |
}, | |
"keywords": [], | |
"author": "", | |
"license": "ISC" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rm -rf gh-pages.zip dist | |
wget https://github.com/etalab/doc.data.gouv.fr/archive/refs/heads/gh-pages.zip | |
unzip gh-pages.zip | |
mv doc.data.gouv.fr-gh-pages dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const express = require('express'); | |
const app = express(); | |
const path = require('path'); | |
app.use(express.static(path.join(__dirname, 'dist'))); | |
var server = app.listen(8081, function () { | |
var host = server.address().address | |
var port = server.address().port | |
console.log(`server start successfully on http://${host}:${port}`) | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment