用nodejs删除文件,文件夹(采用webpack打包时必用)

您所在的位置:网站首页 webpack命令行参数 用nodejs删除文件,文件夹(采用webpack打包时必用)

用nodejs删除文件,文件夹(采用webpack打包时必用)

2023-04-06 09:15| 来源: 网络整理| 查看: 265

使用webpack打包,如果文件内容有修改,那么会出现些重复多余的文件。

遇到这样的事,很多时候我们会采用gulp +webpack的方式处理,但是如果只是使用gulp的删除文件功能就采用gulp那真的是大炮打蚊子。前两个有朋友问我怎么做,我就把自己用node删除文件的方法共享给了他,稍微改造了下,觉得还行,比较好用,所以分享一下,有需要的朋友可以下载。

//del.js

/** * Created by lenovo on 2017/5/12. */ var fs = require('fs'); //获取从命令行传入的参数列表 function getParamList(val, config) { var valList = val.split('='); if (valList[0] === config) { return valList[1].split(','); } else { return []; } } //获取从命令行传入的参数列表(去除默认传入的两个) var agrv = process.argv.slice(2); if (agrv.length > 0) { agrv.forEach(function(val, index, array) { var list = getParamList(val, '--targets'); console.log('list', list); list.forEach(function(ele, ind) { deleteTarget(ele || './dist'); }) }); } else { //如果从命令中没有传入参数,则直接默认删除顶级目录下的dist目录。 deleteTarget('./dist'); } // 删除目标文件夹或文件 function deleteTarget(fileUrl) { // 如果当前url不存在,则退出 if (!fs.existsSync(fileUrl)) return; // 当前文件为文件夹时 if (fs.statSync(fileUrl).isDirectory()) { var files = fs.readdirSync(fileUrl); var len = files.length, removeNumber = 0; if (len > 0) { files.forEach(function(file) { removeNumber ++; var stats = fs.statSync(fileUrl+'/'+file); var url = fileUrl + '/' + file; if (fs.statSync(url).isDirectory()) { deleteTarget(url); } else { fs.unlinkSync(url); } }); if (removeNumber === len) { // 删除当前文件夹下的所有文件后,删除当前空文件夹(注:所有的都采用同步删除) fs.rmdirSync(fileUrl); console.log('删除文件夹' + fileUrl + '成功'); } } else { fs.rmdirSync(fileUrl) } } else { // 当前文件为文件时 fs.unlinkSync(fileUrl); console.log('删除文件' + fileUrl + '成功'); } }

//package.json

{ "name": "webpack-maoruibin2.0", "version": "1.0.1", "description": "", "author": { "name": "maoruibin", "email": "[email protected]" }, "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "webpack-dev-server --hot", **"webpack": "node server/delete.js && webpack", "webpack:p": "node server/delete.js --targets=./dist,test2 && webpack",** "del": "node server/delete.js", "build": "babel-node ./node_modules/webpack/bin/webpack" }, "dependencies": { "vue": "^2.3.3" }, "devDependencies": { "babel-core": "^6.24.1", "babel-loader": "^7.0.0", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "babel-preset-stage-1": "^6.24.1", "babel-preset-stage-2": "^6.24.1", "babel-preset-stage-3":"^6.24.1", "babel-plugin-transform-class-properties": "^6.24.1", "html-webpack-plugin": "^2.28.0", "webpack-dev-server": "^2.4.5", "webpack": "^2.5.1", "glob": "^7.1.1", "string-loader": "^0.0.1", "style-loader": "^0.17.0", "css-loader": "^0.28.1", "url-loader": "^0.5.8", "file-loader":"^0.11.1", "extract-text-webpack-plugin":"^2.1.0", "vue-loader":"^12.0.3", "vue-template-compiler":"^2.3.3", "webpack-chunk-hash": "^0.4.0", "inline-manifest-webpack-plugin":"^3.0.1" }, "author": "", "license": "ISC" }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3