Replacer

A laravel-mix extension to copy files append hash queries to public urls.
latest v1.3.2 - released
soufyakoub
115 downloads last week
MIT license
6 versions
replace
manifest
url
public

npm npm Build Status codecov MIT license

mix-replacer

A laravel-mix extension to copy files and append hash queries to public urls.

Installation

Install this package as a dev dependency:

npm --save-dev i mix-replacer

Usage

from your webpack.mix.js, require mix-replacer.

This will add a new copyAndReplace method that can be used like this:

const mix = require("laravel-mix");
require("mix-replacer");

mix.setPublicPath("public")
   .js("resources/js/index.js", "public/js")
   .sass("resources/scss/index.scss", "public/css")
   .copy("resources/images/*", "public/images")
   .copyAndReplace("resources/config/*", "public");

Now after the compilation is done, your public directory will contain your expected files.

Also, for all files matched against the resources/config/* pattern, public URLs inside double braces {{ }} will contain hash queries extracted from the generated public/mix-manifest.json.

Example

This:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
    <msapplication>
        <tile>
            <square70x70logo src="{{/images/logo70.png}}"/>
            <square150x150logo src="{{/images/logo150.png}}"/>
            <square310x310logo src="{{/images/logo310.png}}"/>
            <TileColor>#2483DD</TileColor>
        </tile>
    </msapplication>
</browserconfig>

Will be transformed to This: (Of course, your particular hashes will be unique)

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
    <msapplication>
        <tile>
            <square70x70logo src="/images/logo70.png?id=2c488484a2545fa0d94f"/>
            <square150x150logo src="/images/logo150.png?id=a97169e69a58920b624d"/>
            <square310x310logo src="/images/logo310.png?id=16938d48f46cc4dfa071"/>
            <TileColor>#2483DD</TileColor>
        </tile>
    </msapplication>
</browserconfig>

Options

You can pass an object to the options method to specify custom options:

require("mix-replacer").options({
	delimiters: {
		left: "[["
	}
});
  • delimiters: {object}
    • left: {string} - The left delimiter. Defaults to "{{".
    • right: {string} - The right delimiter. Defaults to "}}".

Getting started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Installation

Install dependencies with: npm install

Running tests

Running tests is as simple as typing npm run test in a terminal from the project's root directory.

Coverage reports are generated to tests/coverage.

:warning: make sure your node.js version is >= 10.14.2, here's why

Contributing

Please feel free to submit issues and pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.