spike-util
Version:
utilities for spike plugins
50 lines (32 loc) • 3.46 kB
Markdown
# Spike Util
[](https://badge.fury.io/js/spike-util) [](https://travis-ci.org/static-dev/spike-util) [](https://david-dm.org/static-dev/spike-util) [](https://coveralls.io/github/static-dev/spike-util)
A grab bag of utilities for spike plugins
> **Note:** This project is in early development, and versioning is a little different. [Read this](http://markup.im/#q4_cRZ1Q) for more details.
### Why should you care?
[Spike](http://github.com/static-dev/spike) uses webpack as its core compiler, but fundamentally behaves a bit differently from webpack, as it's a full static site compiler rather than a javascript bundler. As such, plugins for spike frequently need to make use of a couple specific utilities. In fact, each of these utilities are used in spike's core plugins.
If you are making a spike plugin, check out the documentation below, and one of these functions might be able to save you a bunch of code :grin:
### Installation
`npm install spike-util -S`
### Usage
All of the utilities require access to spike/webpack's `options` in order to work correctly. As such, the plugins are bundled in a class that must be initialized with the config.
```js
const SpikeUtils = require('spike-util')
// webpack plugin apply function
apply (compiler) {
const util = new SpikeUtils(compiler.options)
}
```
With it initialized, you can use any of the following functions:
- `util.addFilesAsWebpackEntries(compilation, files)` - adds one or more files to webpack's pipeline so that it is processed without having to be `require`'d in an entry.
- `util.getSpikeOptions()` - returns spike-specific options that are not easily accessed on the primary webpack config object
- `util.getOutputPath(path)` - given a relative or absolute path to a file in a spike project, return it's output path relative to the project root.
- `util.removeAssets(compilation, files)` - removes assets from webpack's pipeline so that they are not written as entries.
- `util.resolveRelativeSourcePath(path)` - resolves a relative output path from a spike project to an absolute path to the source file.
- `util.isFileIgnored(file)` - given a path to a file in a spike project, returns a boolean for whether the file is ignored or not.
- `util.runAll(compiler, cb)` - run the given function when webpack's compiler initializes, bound to both the `run` and `run-watch` events.
- `util.pathsToRegex(paths)` - given an array of file paths, builds a regex that will match only those paths
- `util.modifyOutputPath(file, outPath)` - Given an absolute or relative (to the project root) path to a file that's being processed by spike, changes the output path to absolute or relative (recommended) path provided. Recommended to use in the `emit` plugin stage.
For more details on any given function, check out the source! I would never say this for any other library, but this is only one simple file, with fairly small functions that are extremely thoroughly documented, so I think it's worth jumping in.
### License & Contributing
- Details on the license [can be found here](LICENSE.md)
- Details on running tests and contributing [can be found here](contributing.md)