@putout/operator-match-files

3.3.0 • Public • Published

@putout/operator-match-files NPM version

🐊Putout operator adds ability to match files to plugins.

Install

npm i putout @putout/operator-match-files

API

If you want to create 🐊Putout plugin that will match files according to your needs just:

const {operator} = require('putout');
const {matchFiles} = operator;
const updateTSConfig = require('../update-tsconfig');

module.exports = matchFiles({
    'tsconfig.json': updateTSConfig,
});

This will help in case when update-tsconfig is disabled by default:

const updateTSConfig = require('./update-tsconfig');

module.exports.rules = {
    'update-tsconfig': ['off', updateTSConfig],
};

And you want to help users avoid updating .putout.json config with:

{
    "match": {
        "tsconfig.json": {
            "nextjs/update-tsconfig": "on"
        }
    },
    "plugins": ["nextjs"]
}

If you want to pass options use:

{
    "match": {
        "tsconfig.json": {
            "nextjs/update-tsconfig": ["on", {
                "ignore": []
            }]
        }
    },
    "plugins": ["nextjs"]
}

Instead of this, redlint can be used, it will generate .filesystem.json which can be processed by 🐊Putout.

Rename

If you want to save with other name use ->:

const {operator} = require('putout');
const {matchFiles} = operator;
const updateTSConfig = require('../update-tsconfig');

module.exports = matchFiles({
    'tsconfig.json -> hello.json': updateTSConfig,
});

Matcher

You can even use file matchers:

{
    "rules": {
        "filesystem/convert-json-to-js": ["on", {
            "filename": "package.json"
        }]
    }
}

Matchers: __filename = __name.__ext

const {operator} = require('putout');
const {matchFiles} = operator;
const updateTSConfig = require('../update-tsconfig');

module.exports = matchFiles({
    '__name.json -> __name.js': updateTSConfig,
});

License

MIT

Package Sidebar

Install

npm i @putout/operator-match-files

Weekly Downloads

2,098

Version

3.3.0

License

MIT

Unpacked Size

9.88 kB

Total Files

4

Last publish

Collaborators

  • coderaiser