JSPM

  • Created
  • Published
  • Downloads 9
  • Score
    100M100P100Q47231F
  • License MIT

Utility to serve Marko build a server from a template

Package Exports

  • @marko/build
  • @marko/build/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@marko/build) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme


@marko/build
API Stability NPM Version Downloads

Utility to build a node server from a marko file

CLI

Getting Started

npm install @marko/build
marko-build .

or

npx @marko/build .

Example

marko-build .
marko-build ./my-page.marko

Options

  • --output -o: Where to write the build
  • --static: Build static HTML files instead of a node server

Config overrides

While @marko/build works out-of-the box without any config, it does allow customizing and extending the default config for unique use-cases.

Webpack

NOTE: @marko/build currently uses webpack to build projects, however, this may change in the future so it's recommended to avoid using a custom webpack config if possible.

In the most extreme case, you can use a custom webpack.config.js. This config file is discovered based on the entry that is passed to the cli command, but given that it's a standalone config file, you can use webpack directly to build your project as well.

To help configure webpack, @marko/build exports a configBuilder function that allows you to use the base config, while adding your own customizations.

Example

webpack.config.js

import path from "path";
import { configBuilder } from "@marko/build";
import MyPlugin from "my-plugin";

const { getServerConfig, getBrowserConfigs } = configBuilder({
  entry: path.join(__dirname, "target.marko"),
  production: process.env.NODE_ENV === "production"
});

module.exports = [
  ...getBrowserConfigs(config => {
    config.plugins.push(new MyPlugin());
    return config;
  }),
  getServerConfig(config => {
    config.plugins.push(new MyPlugin());
    return config;
  })
];

API

Installation

npm install @marko/build

configBuilder

Returns 3 functions: getServerConfig, getBrowserConfig, and getBrowserConfigs.

Options

  • entry - the marko file to build
  • output - where to write the build
  • production - whether to build in production mode

loadWebpackConfig

Loads a custom webpack.config.js or creates a default array of compiler configs.

Options

  • entry - the marko file to build
  • output - where to write the build
  • production - whether to build in production mode