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.

106 lines (91 loc) 3.31 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 distSrcPath = path.join('src') let indexInputPath = path.join('index.pug') function runPrompts(){ const schema = [{ description:'Distribution src folder path', name:'distSrcPath', default:distSrcPath },{ description:'Build output folder path', name:'buildPath', default: ()=>path.join(promisePrompt.historyValue('distSrcPath'), '../', 'dist') },{ description:'Create tsconfig file', name:'createTsConfigFile', default:'yes', ask:()=>!ackPath( promisePrompt.historyValue('distSrcPath') ).sync().exists() },{ description:'Create tsconfig file', name:'createTsConfigFile', default:'yes', ask:()=>!ackPath( promisePrompt.historyValue('distSrcPath') ).sync().exists() }] const buildScriptDefined = packHelp.scriptDefined("build") if( !buildScriptDefined ){ schema.push({ description:'Add build convenient script to npm package', name:'addBuildScript', default:'yes' }) } return promisePrompt(schema) } function processPrompts(results){ let promise = Promise.resolve() if(!results)return promise; let savePack = false //param directories promise = promise.then( ()=>ackPath( results.distSrcPath ).paramDir() ) promise = promise.then( ()=>ackPath( results.buildPath ).paramDir() ) //create distributable tsconfig.json file const createTsConfigFile = promisePrompt.isLikeTrue(results.createTsConfigFile) if(createTsConfigFile){ const tsconfigOutpath = path.join( results.distSrcPath, 'tsconfig.json' ) promise = promise.then(()=>{ log('Creating '+tsconfigOutpath+'...') const fromData = fs.readFileSync( path.join(__dirname,'lib','ack-angular','tsconfig.dist.json') ) const Path = ackPath( tsconfigOutpath ) return Path.paramDir() .then( ()=>Path.writeFile(fromData) ) }) } const addBuildScript = promisePrompt.isLikeTrue(results.addBuildScript) if(addBuildScript){ savePack = true packHelp.setScript( "build", "ngc --declaration --project " + results.distSrcPath, "Builds source code into a distributable package" ) if( !promiseSpawn.isModuleInstalled('@angular/compiler') ){ installs.push({name:'@angular/compiler', details:'Installing @angular/compiler to handle compiling typescript files in NodeJs'}) } if( !promiseSpawn.isModuleInstalled('@angular/compiler-cli') ){ installs.push({name:'@angular/compiler-cli', details:'Installing @angular/compiler-cli to handle invoking @angular/compiler from a command line interface'}) } } if(savePack){ promise = promise.then(()=>log('Saving package.json...')) .then(()=>packHelp.save()) } return promise .then( ()=>ackPackHelp.updatePrompt("init:ts-dist", results).save() ) } runPrompts() .then(processPrompts) .catch(e=>{ if(e.message=='canceled'){ return } log.error(e) })