text-replace-file-loader

calls file-loader on all require statements in a document and replaces those instances with the public file path


License
MIT
Install
npm install text-replace-file-loader@0.0.1

Documentation

npm Bower node deps License

Text Replace File Loader

A loader for webpack that imports all files in a given document, replacing the 'require' statements with their public path.

Install

npm install --save-dev text-replace-file-loader

Usage

Use the loader either via your webpack config, CLI or inline.

Webpack Config (recommended)

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.json$/,
        use: ['json-loader', 'text-replace-file-loader?name=[name].[ext]']
      }
    ]
  }
}

Example

Example

webpack.config.js

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'something.js',
    publicPath: '/',
  },
  module: {
    loaders: [
      {
        test: /\.json$/,
        // This will output both the json and all files the json requires on.
        use: ['file-loader?name=[name].[ext]', 'text-replace-file-loader?name=[name].[ext]']
      }
    ]
  }
}

In your application

const myJson = require('./file.json'); // Can handle any type of file though.

Your Json: file.json

{
  "key1": {
    "key2": {
      "key3": "require('assets/images/image1.png')"
    },
    "key4": "require('assets/index.json')"
  }
}

Output

Directory listing

something.js
image1.png
index.json
file.json

Output Json: dist/file.json

{
  "key1": {
    "key2": {
      "key3": "/image1.png"
    },
    "key4": "/index.json"
  }
}

Note: If publicPath were 'myurl' then it would be 'myurl/image1.png' rather than '/image1.png'

Options & Config

This module clones its context for every module it finds and passes it on to file-loader. It's essentially an in-line parser for that module. Because of that, please reference file-loader's main page for information on options and config. It should work the same (\but for file imports within the loading file rather than the loading file itself.

Contributors

Scott Leland Crossen

http://scottcrossen42.com
scottcrossen42@gmail.com

Special Thanks

Brady Parks, Sydney MacFarlane, John Hancock, Doug Patterson, Megan Parks, Madison Russell