Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
filemanager-webpack-plugin
Advanced tools
Webpack plugin to copy, archive (.zip), move, delete files and directories before and after builds
filemanager-webpack-plugin is a Webpack plugin that allows you to manage files and directories before and after the Webpack build process. It provides functionalities such as copying, moving, deleting, and archiving files and directories.
Copy Files
This feature allows you to copy files from one location to another. In this example, 'file.txt' is copied from the 'src' directory to the 'dist' directory after the Webpack build process ends.
const FileManagerPlugin = require('filemanager-webpack-plugin');
module.exports = {
plugins: [
new FileManagerPlugin({
events: {
onEnd: {
copy: [
{ source: './src/file.txt', destination: './dist/file.txt' }
]
}
}
})
]
};
Move Files
This feature allows you to move files from one location to another. In this example, 'file.txt' is moved from the 'src' directory to the 'dist' directory after the Webpack build process ends.
const FileManagerPlugin = require('filemanager-webpack-plugin');
module.exports = {
plugins: [
new FileManagerPlugin({
events: {
onEnd: {
move: [
{ source: './src/file.txt', destination: './dist/file.txt' }
]
}
}
})
]
};
Delete Files
This feature allows you to delete files. In this example, 'file.txt' is deleted from the 'dist' directory after the Webpack build process ends.
const FileManagerPlugin = require('filemanager-webpack-plugin');
module.exports = {
plugins: [
new FileManagerPlugin({
events: {
onEnd: {
delete: [
'./dist/file.txt'
]
}
}
})
]
};
Archive Files
This feature allows you to archive files into a zip file. In this example, the contents of the 'dist' directory are archived into 'archive.zip' after the Webpack build process ends.
const FileManagerPlugin = require('filemanager-webpack-plugin');
module.exports = {
plugins: [
new FileManagerPlugin({
events: {
onEnd: {
archive: [
{ source: './dist', destination: './dist/archive.zip' }
]
}
}
})
]
};
copy-webpack-plugin is a Webpack plugin that copies individual files or entire directories to the build directory. It is similar to the copy functionality of filemanager-webpack-plugin but does not provide other functionalities like moving, deleting, or archiving files.
clean-webpack-plugin is a Webpack plugin that removes/cleans your build folder(s) before building. It is similar to the delete functionality of filemanager-webpack-plugin but does not provide other functionalities like copying, moving, or archiving files.
webpack-shell-plugin-next is a Webpack plugin that allows you to run shell commands before or after the Webpack build process. It can be used to achieve similar functionalities as filemanager-webpack-plugin by running shell commands for copying, moving, deleting, or archiving files, but it requires more manual setup.
This Webpack plugin allows you to copy, archive (.zip/.tar/.tar.gz), move, delete files and directories before and after builds
npm install filemanager-webpack-plugin --save-dev
# or
yarn add filemanager-webpack-plugin --dev
// webpack.config.js:
const FileManagerPlugin = require('filemanager-webpack-plugin');
export default {
// ...rest of the config
plugins: [
new FileManagerPlugin({
events: {
onEnd: {
copy: [
{ source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
{ source: '/path/**/*.js', destination: '/path' },
],
move: [
{ source: '/path/from', destination: '/path/to' },
{ source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
],
delete: ['/path/to/file.txt', '/path/to/directory/'],
mkdir: ['/path/to/directory/', '/another/directory/'],
archive: [
{ source: '/path/from', destination: '/path/to.zip' },
{ source: '/path/**/*.js', destination: '/path/to.zip' },
{ source: '/path/fromfile.txt', destination: '/path/to.zip' },
{ source: '/path/fromfile.txt', destination: '/path/to.zip', format: 'tar' },
{
source: '/path/fromfile.txt',
destination: '/path/to.tar.gz',
format: 'tar',
options: {
gzip: true,
gzipOptions: {
level: 1,
},
globOptions: {
// https://github.com/Yqnn/node-readdir-glob#options
dot: true,
},
},
},
],
},
},
}),
],
};
new FileManagerPlugin({
events: {
onStart: {},
onEnd: {},
},
runTasksInSeries: false,
runOnceInWatchMode: false,
});
onStart
: Commands to execute before Webpack begins the bundling processNote:
OnStart might execute twice for file changes in webpack context.
new webpack.WatchIgnorePlugin({
paths: [/copied-directory/],
});
onEnd
: Commands to execute after Webpack has finished the bundling processCopy individual files or entire directories from a source folder to a destination folder. Also supports glob pattern.
[
{ source: '/path/from', destination: '/path/to' },
{
source: '/path/**/*.js',
destination: '/path',
options: {
flat: false,
preserveTimestamps: true,
overwrite: true,
},
globOptions: {
dot: true,
},
},
{ source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
{ source: '/path/**/*.{html,js}', destination: '/path/to' },
{ source: '/path/{file1,file2}.js', destination: '/path/to' },
];
Options
string
] - a file or a directory or a globstring
] - a file or a directory.object
] - copy optionsobject
] - options to forward to glob options(See available options here)Caveats
glob
, destination must be a directoryfile
and destination is a directory, the file will be copied into the directoryDelete individual files or entire directories. Also supports glob pattern
['/path/to/file.txt', '/path/to/directory/', '/another-path/to/directory/**.js'];
or
[
{
source: '/path/to/file.txt',
options: {
force: true,
},
},
];
Move individual files or entire directories.
[
{ source: '/path/from', destination: '/path/to' },
{ source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
];
Options
string
] - a file or a directory or a globstring
] - a file or a directory.Create a directory path with given path
['/path/to/directory/', '/another/directory/'];
Archive individual files or entire directories. Defaults to .zip unless 'format' and 'options' provided. Uses node-archiver
[
{ source: '/path/from', destination: '/path/to.zip' },
{ source: '/path/**/*.js', destination: '/path/to.zip' },
{ source: '/path/fromfile.txt', destination: '/path/to.zip' },
{ source: '/path/fromfile.txt', destination: '/path/to.zip', format: 'tar' },
{
source: '/path/fromfile.txt',
destination: '/path/to.tar.gz',
format: 'tar', // optional
options: {
// see https://www.archiverjs.com/docs/archiver
gzip: true,
gzipOptions: {
level: 1,
},
globOptions: {
// https://github.com/Yqnn/node-readdir-glob#options
dot: true,
},
},
},
];
string
] - a file or a directory or a globstring
] - a file.string
] - Optional. Defaults to extension in destination filename.object
] - Refer https://www.archiverjs.com/archiverIf you need to preserve the order in which operations will run you can set the onStart and onEnd events to be Arrays. In this example below, in the onEnd event the copy action will run first, and then the delete after:
{
onEnd: [
{
copy: [{ source: './dist/bundle.js', destination: './newfile.js' }],
},
{
delete: ['./dist/bundle.js'],
},
];
}
boolean
] - Run tasks in series. Defaults to falseboolean
] - The onStart
event will be run only once in watch mode. Defaults to falseFor Example, the following will run one after the other
copy: [
{ source: 'dist/index.html', destination: 'dir1/' },
{ source: 'dir1/index.html', destination: 'dir2/' },
];
string
] - The directory, an absolute path, for resolving files. Defaults to webpack context.FAQs
Webpack plugin to copy, archive (.zip), move, delete files and directories before and after builds
We found that filemanager-webpack-plugin demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.