Skip to content

Latest commit

 

History

History

README.md

Install

npm i @putout/plugin-filesystem -D

Rules

Config

{
    "rules": {
        "filesystem/bundle": "off",
        
        "filesystem/convert-filesystem-to-simple-filesystem": "off",
        
        "filesystem/convert-js-to-json": ["off", {
            "filename": "package.js"
        }],
        "filesystem/convert-json-to-js": ["off", {
            "filename": "package.json"
        }],
        "filesystem/convert-json-to-toml": ["off", {
            "filename": "bunfig.json"
        }],
        "filesystem/convert-json-to-yaml": ["off", {
            "filename": "actions.json"
        }],
        "filesystem/convert-simple-filesystem-to-filesystem": "off",
        
        "filesystem/convert-toml-to-json": ["off", {
            "filename": "bunfig.toml"
        }],
        "filesystem/convert-toml-to-yaml": ["off", {
            "filename": "bunfig.toml"
        }],
        
        "filesystem/convert-yaml-to-json": ["off", {
            "filename": "actions.yaml"
        }],
        "filesystem/convert-yaml-to-toml": ["off", {
            "filename": "bunfig.yaml"
        }],
        "filesystem/move-referenced-file": "off",
        "filesystem/read-all-files": ["off", {
            "mask": "*"
        }],
        
        "filesystem/remove-files": "off",
        "filesystem/rename-file": "off",
        
        "filesystem/rename-referenced-file": "off",
        "filesystem/rename-spec-to-test": "off",
        "filesystem/rename-test-to-spec": "off",
        
        "filesystem/replace-cwd": ["off", {
            "from": "/home/coderaiser/putout",
            "to": "/"
        }],
        "filesystem/write-all-files": "off"
    }
}

bundle

Bundle and minify css files.

{
    "rules": {
        "filesystem/rename-file": ["on", {
            "from": "README.md",
            "to": "readme.md"
        }]
    }
}

Checkout in 🐊Putout Editor.

Before:

/
|-- css/
|  `-- hello.css
|  `-- world.css

After:

/
|-- css/
|  `-- hello.css
|  `-- world.css
|-- dist/
|   `-- main.css

Just minify styles:

{
    "rules": {
        "filesystem/rename-file": ["on", {
            "mask": "*.test.*",
            "from": "test",
            "to": "spec"
        }]
    }
}

Before:

/
|-- css/
|  `-- hello.css
|  `-- world.css

After:

/
|-- css/
|  `-- hello.css
|  `-- world.css
|-- dist/
|   `-- hello.css
|   `-- world.css

Create subdirectory:

{
    "rules": {
        "filesystem/remove-files": ["on", {
            "names": ["coverage"],
            "dismiss": [
                ".travis.yml"
            ]
        }]
    }
}

Before:

/
|-- css/
|  `-- hello.css
|  `-- world.css

After:

/
|-- css/
|  `-- hello.css
|  `-- world.css
|-- dist/
|   `-- columns
|       `-- hello.css
|       `-- world.css

Filter css files by mask:

{
    "rules": {
        "filesystem/rename-referenced-file": ["on", {
            "from": "hello.js",
            "to": "world.js"
        }]
    }
}

Before:

/
|-- css/
|  `-- hello.css
|  `-- world.good.css

After:

/
|-- css/
|  `-- hello.css
|  `-- world.css
|-- dist/
|   `-- world.good.css

You can even override transform with your own config:

// hello.spec.js
import hello from './hello.js';

Concut files:

Before:

/
|-- css/
|  `-- hello.css
|  `-- world.css

After:

/
|-- css/
|  `-- hello.css
|  `-- world.css
|-- dist/
|   `-- hello.css

convert-filesystem-to-simple-filesystem

Checkout in 🐊Putout Editor.

convert-js-to-json

Checkout in 🐊Putout Editor:

Filesystem:

-["/", "/package.js"]
+["/", "/package.json"]

❌ Example of incorrect code

✅ Example of correct code

convert-json-to-js

Checkout in 🐊Putout Editor.

Filesystem:

-["/", "/package.json"]
+["/", "/package.js"]

convert-json-to-toml

Filesystem:

-["/", "/bunfig.json"]
+["/", "/bunfig.toml"]

convert-json-to-yaml

Filesystem:

-["/", "/actions.json"]
+["/", "/actions.yaml"]

❌ Example of incorrect code

__putout_processor_json({
    rules: {
        'filesystem/move-referenced-file': ['on', {
            name: 'hello.js',
            directory: 'lib',
        }],
    },
});

✅ Example of correct code

// test/hello.spec.js
import hello from '../src/hello.js';

convert-simple-filesystem-to-filesystem

Checkout in 🐊Putout Editor.

convert-toml-to-json

Filesystem:

-["/", "/bunfig.toml"]
+["/", "/bunfig.json"]

convert-toml-to-yaml

Filesystem:

-["/", "/bunfig.toml"]
+["/", "/bunfig.yaml"]

❌ Example of incorrect code

// hello.spec.js
import hello from './world.js';

✅ Example of correct code

// world.js
export const hello = 'world';

convert-yaml-to-json

Filesystem:

-["/", "/actions.yaml"]
+["/", "/actions.json"]

❌ Example of incorrect code

// src/hello.js
export const hello = 'world';

✅ Example of correct code

// test/hello.spec.js
import hello from '../lib/hello.js';

convert-yaml-to-toml

Filesystem:

-["/", "/bunfig.yaml"]
+["/", "/bunfig.toml"]

move-referenced-file

Update .putout.json to enable rule:

Checkout in 🐊Putout Editor.

Before:

/
|-- test/
|  `-- hello.spec.js
|-- src/
|   `-- hello.js
`-- lib/
__putout_processor_filesystem({
    type: 'directory',
    filename: '/',
    files: [{
        type: 'file',
        filename: '/hello.txt',
    }, {
        type: 'file',
        filename: '/world.txt',
        content: 'hello world',
    }, {
        type: 'directory',
        filename: '/abc',
        files: [],
    }],
});
__putout_processor_filesystem([
    '/',
    '/hello.txt',
    ['/world.txt', 'hello world'],
    '/abc/',
]);

After:

/
|-- test/
|   `-- hello.spec.js
|-- src/
`-- lib/
    `-- hello.js
-src/hello.js
+lib/hello.js
__putout_processor_json({
    rules: {
        'filesystem/bundle': ['on', {
            groups: [
                ['__:columns/__', [
                    'name-size-date.css',
                    'name-size.css',
                ]],
                [
                    'main.css',
                    ['hello.css', 'world.css'],
                ],
                '1:1',
            ],
        }],
    },
});
__putout_processor_json({
    rules: {
        'filesystem/bundle': ['on', {
            groups: ['1:1'],
        }],
    },
});

read-all-files

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

name: Node CI
on:
    push:
    branches: master

✅ Example of correct code

{
    "name": "Node CI",
    "on": {
        "push": {
            "branches": "master"
        }
    }
}

remove-files

Remove next files:

  • *.swp;
  • *.swo;
  • *.lock;
  • .DS_Store;
  • .travis.yml;

Apply overrides:

{
    "rules": {
        "filesystem/bundle": ["on", {
            "groups": ["hello.css"]
        }]
    }
}

It will make next modifications to filesystem:

 /
 |-- test/
 |   `-- hello.spec.js
-|-- coverage/
 `-- lib/
     `-- hello.js

❌ Example of incorrect code

{
    "rules": {
        "filesystem/replace-cwd": ["on", {
            "from": "/home/coderaiser/putout",
            "to": "/"
        }]
    }
}

✅ Example of correct code

[install]
lockfile = false
linker = "hoisted"

rename-file

Checkout in 🐊Putout Editor.

Update .putout.json to enable rule:

{
    "rules": {
        "filesystem/bundle": ["on", {
            "groups": [
                ["__:columns/__", [
                    "name-size-date.css",
                    "name-size.css"
                ]]
            ]
        }]
    }
}

It will make next modifications to filesystem:

-README.md
+readme.md

For more sophisticated example, use mask:

{
    "rules": {
        "filesystem/bundle": ["on", {
            "mask": "*.good.css",
            "groups": ["1:1"]
        }]
    }
}

It will rename 'test' to 'spec' in *.test.* files:

-index.test.js
+index.spec.js

❌ Example of incorrect code

rename-referenced-file

Update .putout.json to enable rule:

Checkout in 🐊Putout Editor.

Before:

__putout_processor_json(['/', '/hello.xyz']);
__putout_processor_json([
    '/',
    ['/hello.xyz', 'hello world'],
]);

After:

-hello.js
+world.js
__putout_processor_json([
    '/',
    ['/hello.xyz', 'hello world'],
]);
__putout_processor_json({
    plugins: [],
});

❌ Example of incorrect code

{
    "install": {
        "lockfile": false,
        "linker": "hoisted"
    }
}

✅ Example of correct code

name: Node CI
on:
    push:
        branches: master

rename-spec-to-test

Checkout in 🐊Putout Editor.

-index.spec.js
+index.test.js

❌ Example of incorrect code

[install]
lockfile = false
linker = "hoisted"

✅ Example of correct code

rename-test-to-spec

Checkout in 🐊Putout Editor.

-index.test.js
+index.spec.js

❌ Example of incorrect code

[install]
lockfile = false
linker = "hoisted"

✅ Example of correct code

install:
  lockfile: false
  linker: hoisted

replace-cwd

Checkout in 🐊Putout Editor.

When from=/home/coderaiser/putout and to=/:

{
    "install": {
        "lockfile": false,
        "linker": "hoisted"
    }
}

❌ Example of incorrect code

install:
  lockfile: false
  linker: hoisted

✅ Example of correct code

[install]
lockfile = false
linker = "hoisted"

write-all-files

Write all files that was read before to Filesystem.

Checkout in 🐊Putout Editor.

{
    "name": "Node CI",
    "on": {
        "push": {
            "branches": "master"
        }
    }
}

❌ Example of incorrect code

{
    "plugins": []
}

✅ Example of correct code

export default {
    plugins: [],
};

License

MIT