@stoplight/webpack
v2.6.0
Published
Webpack helpers, built on top of webpack-chain.
Downloads
34
Maintainers
Readme
Webpack Helpers
Plugins, built around webpack-chain, that make creating webpack configs easier.
Plugins
- BrowserFS: Replace the native
fs
module with the BrowserFS equivalent.- Note: must
yarn add browserfs
in your project if using this plugin.
- Note: must
- Bugsnag: Upload sourcemaps to bugsnag.
- CSS: Import css.
- Fonts: Import fonts.
- HTML: Render an html template.
- Javascript: Parse javascript.
- Monaco: Import monaco.
- Note: must
yarn add monaco-editor
in your project if using this plugin.
- Note: must
- Optimizations: Minification, chunks, etc.
- Presentation: Better terminal output.
- Public: Use a public assets folder.
- Serve: Serve up a hot reloading dev environment.
- Stylus: Import stylus.
- Typescript: Parse typescript (and optionally also javascript).
- Web Workers: Import web workers.
Installation
# latest stable
yarn add -D @stoplight/webpack
Usage
In your webpack.config.ts
file:
import { createConfig } from "@stoplight/webpack";
import * as path from "path";
import webpack from "webpack";
import { buildEnv } from "./env";
const isElectron = process.env.RUN_CONTEXT === "desktop";
const config: webpack.Configuration = createConfig({
srcDir: path.resolve(process.cwd(), "src"),
distDir: isElectron
? path.resolve(process.cwd(), "desktop", "src", "dist")
: path.resolve("desktop", "src", "dist"),
publicDir: path.resolve(process.cwd(), "src", "public"),
isElectron,
analyze: false,
debug: false,
stats: undefined,
plugins: {
browserfs: isElectron ? undefined : {},
bugsnag: undefined,
css: undefined,
fonts: {},
html: {
// string to assign to the head title tag
title: "Stoplight Studio",
// object to assign to window.env in a head tag script
env: buildEnv(),
// string of html to be inserted towards the top of the head tag
metaHtml: "",
// string of html to be inserted towards the bottom of the head tag
headHtml: "",
// string of html to be inserted towards the bottom of the body tag
bodyHtml: ""
},
javascript: undefined,
monaco: {},
optimizations: {},
presentation: {},
public: undefined,
serve: {},
stylus: undefined,
typescript: {},
workers: undefined
},
onBeforeBuild: _config => {
// ...do whatever you want w config, which is an instance of webpack-chain
}
});
export default config;
Contributing
- Clone repo
- Create / checkout
feature/{name}
,chore/{name}
, orfix/{name}
branch - Install deps:
yarn setup
- Make your changes
- Run tests:
yarn test.prod
- Stage relevant files to git
- Commit:
yarn commit
. NOTE: Commits that don't follow the conventional format will be rejected.yarn commit
creates this format for you, or you can put it together manually and then do a regulargit commit
. - Push:
git push
- Open PR targeting the
develop
branch