pixijs / customize

Customize the list of packages to use for PixiJS v5
https://pixijs.io/customize
11 stars 5 forks source link

Feature Request: Download manual file from CDN #3

Open jonlepage opened 5 years ago

jonlepage commented 5 years ago

Download pixijs pack by promise and GZIP packerer Some people want manual download you just need to sync the selected link in the build and found a way to add in the array pixiJSbuild

var Promise = window.Promise;
function multiImport(modules) {
  return Promise.all(modules.map(function(m) {
    return import('https://unsafe-production.jspm.io/' + (m.name?m.name:m))
        .then(({default: module}) => ([(m.varName ? m.varName : m), module]))}))
        .then((modules) => {
            let mods = {};
            modules.forEach((mod) => mods[mod[0]] = mod[1]);
            return mods
         });
}

multiImport(
    [
        { name: "file-saver" , varName: "fileSaver"  },
        { name: "jszip"      , varName: "JSZip"      },
        { name: "jszip-utils", varName: "JSZipUtils" }
    ])
    .then((modules) => {
        const JSZip = modules.JSZip;
        const JSZipUtils = modules.JSZipUtils;
        const saveAs = modules.fileSaver.saveAs;
        const zip = new JSZip();
        // store here the selected js files
        const pixiJSbuild = [
            "https://pixijs.download/dev/packages/prepare.min.js",
            "https://pixijs.download/dev/packages/settings.min.js",
            "https://pixijs.download/dev/packages/mesh.min.js",
        ];
        pixiJSbuild.forEach(url=>{
            zip.file(url.replace(/.*\//, ""), new Promise((resolve, reject) => JSZipUtils.getBinaryContent(url, (err, data) => (err) ? reject(err) : resolve(String.fromCharCode.apply(null, new Uint8Array(data))))))
        });
        zip.generateAsync({type:"blob"}).then((pixiZip) => saveAs(pixiZip, "pixiJS.zip"), (e) => console.log(e));
   });
bigtimebuddy commented 5 years ago

Good idea, thanks @djmisterjon.