Socket
Socket
Sign inDemoInstall

@putout/plugin-filesystem

Package Overview
Dependencies
4
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @putout/plugin-filesystem

๐ŸŠPutout plugin operates with filesystem


Version published
Weekly downloads
2K
increased by30.31%
Maintainers
1
Created
Weekly downloads
ย 

Readme

Source

@putout/plugin-filesystem NPM version

๐ŸŠPutout plugin helps to lint filesystem.

Install

npm i @putout/plugin-filesystem -D

Rules

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

rename-file

Checkout in ๐ŸŠPutout Editor.

Update .putout.json to enable rule:

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

It will make next modifications to filesystem:

-README.md
+readme.md

For more sophisticated example, use mask:

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

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

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

remove-vim-swap-file

Checkout in ๐ŸŠPutout Editor.

-readme.md.swap

remove-files

Update .putout.json to enable rule:

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

It will make next modifications to filesystem:

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

rename-spec-to-test

Checkout in ๐ŸŠPutout Editor.

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

rename-test-to-spec

Checkout in ๐ŸŠPutout Editor.

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

rename-referenced-file

Update .putout.json to enable rule:

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

Checkout in ๐ŸŠPutout Editor.

Before:

// hello.spec.js
import hello from './hello.js';
// hello.js
export const hello = 'world';

After:

-hello.js
+world.js
// hello.spec.js
import hello from './world.js';
// world.js
export const hello = 'world';

move-referenced-file

Update .putout.json to enable rule:

{
    "rules": {
        "filesystem/move-referenced-file": ["on", {
            "name": "hello.js",
            "directory": "lib"
        }]
    }
}

Checkout in ๐ŸŠPutout Editor.

Before:

/
|-- test/
|  `-- hello.spec.js
|-- src/
|   `-- hello.js
`-- lib/
// test/hello.spec.js
import hello from '../src/hello.js';
// src/hello.js
export const hello = 'world';

After:

/
|-- test/
|   `-- hello.spec.js
|-- src/
`-- lib/
    `-- hello.js
-src/hello.js
+lib/hello.js
// test/hello.spec.js
import hello from '../lib/hello.js';
// lib/hello.js
export const hello = 'world';

convert-simple-filesystem-to-filesystem

Checkout in ๐ŸŠPutout Editor.

โŒ Example of incorrect code

__putout_processor_filesystem([
    '/',
    '/hello.txt',
    [
        '/world.txt',
        'hello world',
    ],
    '/abc/',
]);

โœ… Example of correct code

__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: [],
    }],
});

convert-filesystem-to-simple-filesystem

Checkout in ๐ŸŠPutout Editor.

โŒ Example of incorrect code

__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: [],
    }],
});

โœ… Example of correct code

__putout_processor_filesystem([
    '/',
    '/hello.txt',
    [
        '/world.txt',
        'hello world',
    ],
    '/abc/',
]);

bundle

Bundle and minify css files.

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

Checkout in ๐ŸŠPutout Editor.

Before:

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

After:

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

Just minify styles:

{
    "rules": {
        "filesystem/bundle": ["on", {
            "groups": ["1:1"]
        }]
    }
}

Before:

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

After:

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

Create subdirectory:

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

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/bundle": ["on", {
            "mask": "*.good.css",
            "groups": ["1:1"]
        }]
    }
}

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:

putout(filesystem, {
    rules: {
        'filesystem/bundle': ['on', {
            transform: (source: string | string[], config) => string,
        }],
    },
});

Concreate files:

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

Before:

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

After:

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

replace-cwd

Checkout in ๐ŸŠPutout Editor.

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

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

โŒ Example of incorrect code

__putout_processor_filesystem(['/home/coderaiser/putout/', '/home/coderaiser/putout/README.md']);

โœ… Example of correct code

__putout_processor_filesystem(['/', '/README.md']);

read-all-files

Checkout in ๐ŸŠPutout Editor.

โŒ Example of incorrect code

["/", "/hello.xyz"]

โœ… Example of correct code

["/", [
    "/hello.xyz",
    "hello world"
]]

write-all-files

Write all files that was read before to Filesystem.

Checkout in ๐ŸŠPutout Editor.

["/", [
    "/hello.xyz",
    "hello world"
]]

convert-json-to-js

Checkout in ๐ŸŠPutout Editor.

Filesystem:

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

โŒ Example of incorrect code

{
    "plugins": []
}

โœ… Example of correct code

export default {
    plugins: [],
};

convert-js-to-json

Checkout in ๐ŸŠPutout Editor:

Filesystem:

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

โŒ Example of incorrect code

{
    "plugins": []
}

โœ… Example of correct code

export default {
    plugins: [],
};

License

MIT

Keywords

FAQs

Last updated on 09 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc