@putout/plugin-filesystem
v13.6.0
Published
๐Putout plugin operates with filesystem
Maintainers
Readme
Install
npm i @putout/plugin-filesystem -DRules
- โ bundle;
- โ convert-filesystem-to-simple-filesystem;
- โ convert-js-to-json;
- โ convert-yaml-to-toml;
- โ convert-json-to-toml;
- โ convert-toml-to-json;
- โ convert-toml-to-yaml;
- โ convert-json-to-yaml;
- โ convert-yaml-to-json;
- โ convert-json-to-js;
- โ convert-simple-filesystem-to-filesystem;
- โ move-referenced-file;
- โ read-all-files;
- โ rename-file;
- โ remove-files;
- โ rename-referenced-file;
- โ rename-spec-to-test;
- โ rename-test-to-spec;
- โ replace-cwd;
- โ write-all-files;
Config
{
"rules": {
"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/convert-filesystem-to-simple-filesystem": "off",
"filesystem/replace-cwd": ["off", {
"from": "/home/coderaiser/putout",
"to": "/"
}],
"filesystem/convert-json-to-yaml": ["off", {
"filename": "actions.json"
}],
"filesystem/convert-yaml-to-toml": ["off", {
"filename": "bunfig.yaml"
}],
"filesystem/convert-json-to-toml": ["off", {
"filename": "bunfig.json"
}],
"filesystem/convert-toml-to-json": ["off", {
"filename": "bunfig.toml"
}],
"filesystem/convert-toml-to-yaml": ["off", {
"filename": "bunfig.toml"
}],
"filesystem/convert-json-to-js": ["off", {
"filename": "package.json"
}],
"filesystem/convert-yaml-to-json": ["off", {
"filename": "actions.yaml"
}],
"filesystem/convert-js-to-json": ["off", {
"filename": "package.js"
}]
}
}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.cssAfter:
/
|-- css/
| `-- hello.css
| `-- world.css
|-- dist/
| `-- main.cssJust minify styles:
{
"rules": {
"filesystem/rename-file": ["on", {
"mask": "*.test.*",
"from": "test",
"to": "spec"
}]
}
}Before:
/
|-- css/
| `-- hello.css
| `-- world.cssAfter:
/
|-- css/
| `-- hello.css
| `-- world.css
|-- dist/
| `-- hello.css
| `-- world.cssCreate subdirectory:
{
"rules": {
"filesystem/remove-files": ["on", {
"names": ["coverage"],
"dismiss": [
".travis.yml"
]
}]
}
}Before:
/
|-- css/
| `-- hello.css
| `-- world.cssAfter:
/
|-- css/
| `-- hello.css
| `-- world.css
|-- dist/
| `-- columns
| `-- hello.css
| `-- world.cssFilter css files by mask:
{
"rules": {
"filesystem/rename-referenced-file": ["on", {
"from": "hello.js",
"to": "world.js"
}]
}
}Before:
/
|-- css/
| `-- hello.css
| `-- world.good.cssAfter:
/
|-- css/
| `-- hello.css
| `-- world.css
|-- dist/
| `-- world.good.cssYou can even override transform with your own config:
// hello.spec.js
import hello from './hello.js';Concut files:
Before:
/
|-- css/
| `-- hello.css
| `-- world.cssAfter:
/
|-- css/
| `-- hello.css
| `-- world.css
|-- dist/
| `-- hello.cssconvert-simple-filesystem-to-filesystem
Checkout in ๐Putout Editor.
convert-filesystem-to-simple-filesystem
Checkout in ๐Putout Editor.
convert-json-to-js
Checkout in ๐Putout Editor.
Filesystem:
-["/", "/package.json"]
+["/", "/package.js"]convert-json-to-toml
Filesystem:
-["/", "/bunfig.json"]
+["/", "/bunfig.toml"]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-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-yaml-to-toml
Filesystem:
-["/", "/bunfig.yaml"]
+["/", "/bunfig.toml"]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-js-to-json
Checkout in ๐Putout Editor:
Filesystem:
-["/", "/package.js"]
+["/", "/package.json"]โ Example of incorrect code
โ Example of correct code
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'],
}],
},
});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.mdFor 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
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-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: hoistedrename-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: masterreplace-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"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"
}
}
}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
