symlink-webpack-plugin

Make symbolic links among your built files in webpack

Usage no npm install needed!

<script type="module">
  import symlinkWebpackPlugin from 'https://cdn.skypack.dev/symlink-webpack-plugin';
</script>

README

Symlink Webpack Plugin

GitHub Workflow Status

A webpack plugin to make symbolic links for emitted file.

Installation

npm i -D symlink-webpack-plugin

Usage

In your webpack config:

const SymlinkWebpackPlugin = require('symlink-webpack-plugin');

module.exports = {
  // ...etc
  plugins: [
    new SymlinkWebpackPlugin({ origin: 'index.html', symlink: '200.html' })
  ]
};

This setting makes symbolic link file [ouput_path]/200.html to [ouput_path]/index.html.

You can give configurations as Array

const SymlinkWebpackPlugin = require('symlink-webpack-plugin');

module.exports = {
  // ...etc
  plugins: [
    new SymlinkWebpackPlugin([
      { origin: 'index.html', symlink: '200.html' },
      { origin: 'index.html', symlink: 'error_pages/404.html' },
    ])
  ]
};

force option (default: false)

const SymlinkWebpackPlugin = require('symlink-webpack-plugin');

module.exports = {
  // ...etc
  plugins: [
    new SymlinkWebpackPlugin([
      { origin: 'index.html', symlink: '200.html', force: true },
      { origin: 'index.html', symlink: '404.html' },
    ])
  ]
};

The plugin doesn't make any symlink if a directory for a destination doesn't exist as default. Passing an option force: true, will create it regardless.

When directories of symlink don't exist, force option allows to dig. For instance, what if a config has symlink: 'one/two/200.html' but one/two/ dir doesn't exist when the plugin runs, one, one/two directories will be created.

hook option (default: afterEmit)

You can point an exact compiler hook to make a symlink.

  { origin: 'index.html', symlink: '200.html', hook: 'entryOption' },

Development

yarn
yarn test

License

MIT