GithubHelp home page GithubHelp logo

coreybutler / productionline-web Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 3.0 1.01 MB

An extension of productionline, providing common web/UI build capabilities.

JavaScript 100.00%
productionline build-tool minify transpile nodejs npm-scripts

productionline-web's Introduction

productionline-web Build Status Greenkeeper badge

npm install productionline-web --save-dev

An extension to productionline that adds common tasks for build web applications (ie minification, munging, concatenation, etc).

The are a number of additional methods this class adds to productionline, including:

  • sourcemapurl attribute (Sourcemap URL root)
  • transpile(filepath) - Transpile a file to ES5 (Babel)
  • minify() - Minify a block of CSS code.

There are also a number of additional tasks:

  • clean() - Clears the output directory.
  • copyAssets() - Copies a common assets directory from the source to the output directory.
  • buildHTML() - Copies HTML to the output directory.
  • buildJavaScript() - Copies a transpiled version of JS files to the output directory.
  • buildCSS() - Copies a minified version of CSS files to the output directory.
  • make() (see below)

Standard "Make" Process

It is worth looking at the source for the make() method. By default, this method will copy assets from the source to destination and minify CSS/JS. This can and often will be overridden with logic suitable for your build process (example: adding transpilation or code concatenation).

Examples

See the examples, and feel free to submit PR's with new examples.

Basic Use

The source code is well documented with several feature methods.

The following would go in a file called build.js.

const Builder = ('productionline-web')
const path = require('path')
const builder = new Builder({
  commands: {
    '--make': () => {
      console.log('Running Build Process:')

      // The following are not explicitly necessary since the source,
      // assets, and destination are all being set to their defaults.
      // However; the code is written so you can supply your own
      // folder structure.
      builder.source = path.resolve('./src')
      builder.assets = path.resolve('./assets') // Relative to source!
      builder.destination = path.resolve('./dist')

      // Queue the built-in build process.
      builder.make()
      builder.run()
    }
  }
})

In the package.json file, add an npm command like:

{
  "scripts": {
    "test": "...",
    "build": "node build.js --make"
  }
}

The entire process can then be run using npm run build.

Live Builds

During development, it's often useful to monitor source code and rebuild whenever a file changes. To support this, productionline contains a watch task, which will remain running and respond to file system changes.

For example:

builder.watch((action, filepath) => {
  builder.make()
  builder.run()
})

productionline-web's People

Contributors

coreybutler avatar dependabot[bot] avatar greenkeeper[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

productionline-web's Issues

Assets path must be set as array

builder.assets = path.resolve('./assets')

throws this error:
screen shot 2018-04-30 at 12 58 41 pm

Instead you currently have to use:

builder.assets = [path.resolve('./assets')]

Need ability to specify javascript path and excludes

At the moment, the buildJavaScript() method uses this hardcoded path:

path.join(this.SOURCE, '/**/*.js')

This is an issue in the event that there are libraries or other js files that we don't want to be processed, ie pre-built webcomponents etc.

If we could specify paths and excludes for the different types of source files we have, we could avoid having to rewrite the buildJavaScript method for custom builds.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.