UNPKG

ack-webpack

Version:

A code bundler that drastically reduces setup time by offering an init prompt of project setup questions and includes a fantastic browser reloader.

115 lines (96 loc) 3.34 kB
const ackPath = require('ack-path') const promiseSpawn = require('../promiseSpawn.function') const install = require('../install.function') const path = require('path') const fs = require('fs') const log = require("../log.function") const promisePrompt = require('../promisePrompt.function') const PackHelp = require('./package.help.js') const packHelp = new PackHelp() const ackPackHelp = new (require('./ack-package.help'))() const prefxFilePath = path.join('app','src','prefx.ts') function runPrompts(){ const schema = [{ description:'npm install ack-angular', name:'install', default:'yes' },{ description:'npm install ack-angular-fx', name:'installFx', default:'yes' }] schema.push.apply(schema, getFxPromptSchema()) return promisePrompt(schema) } function getFxPromptSchema(){ const schema = [] const fxScriptDefined = packHelp.scriptDefined("compile:prefx") if( !fxScriptDefined ){ schema.push({ description:'Add ack-angular-fx convenient scripts to npm package', name:'addFxScripts', default:'yes' }) schema.push({ description:'Enter prefx.ts output file path', name:'prefxFilePath', default:prefxFilePath, ask: ()=>promisePrompt.isLikeTrue( promisePrompt.prompt.history('addFxScripts').value ) }) } schema.push({ description:'Run script to create ack-angular-fx prefx.ts file', name:'runPrefx', default:'yes', ask: ()=>fxScriptDefined || promisePrompt.isLikeTrue( promisePrompt.prompt.history('addFxScripts').value ) }) return schema } function processPrompts(results){ let promise = Promise.resolve() if(!results)return promise; /* ack-angular-fx scripting */ const addFxScripts = results.addFxScripts!=null && promisePrompt.isLikeTrue(results.addFxScripts) if(addFxScripts){ const prefxFilePath = results.prefxFilePath packHelp.setScript( "compile:prefx", "ack-angular-fx --igniter void --select childStag,absoluteSwap,100,200,500,1000 --effects fade,slide,bounce --out " + prefxFilePath, "Creates resusable Angular animations defintions file that is compatible with AoT compilation" ) } if(addFxScripts){ promise = promise .then(()=>log('Saving package.json...')) .then(()=>packHelp.save()) } /* installs : must come after package.json save */ if( promisePrompt.isLikeTrue(results.install) ){ promise = promise .then(()=>log('Installing ack-angular...')) .then( ()=>promiseSpawn.installPacks(['ack-angular']) ) } if( promisePrompt.isLikeTrue(results.installFx) ){ promise = promise .then(()=>log('Installing ack-angular-fx...')) .then( ()=>promiseSpawn.installPacks(['@angular/animations','ack-angular-fx']) ) } /* end: installs */ if( promisePrompt.isLikeTrue(results.runPrefx) ){ promise = promise .then(()=>log('Creating ack-angular-fx prefx.ts file...')) .then( ()=>promiseSpawn(['npm','run','compile:prefx'], {log:log}) ) } /* end : after run scripts */ return promise .then( ()=>ackPackHelp.updatePrompt("init:ack-angular", results).save() ) } runPrompts() .then(processPrompts) .catch(e=>{ if(e.message=='canceled'){ console.log(); return } log.error(e) })