本教程包括如何使用package.json中的脚本标签命令复制文件
- 从一个文件夹复制文件到另一个文件夹
- npm脚本复制目录包括嵌套目录
有很多npm包可以复制文件,在这个例子中我将使用copyFiles npm包。
使用npm copy的好处:
因为你不用担心在操作系统环境中记住复制命令,这将照顾到在Windows、Mac、Unix口味上的运行。
如何在nodejs npm脚本中复制文件或目录
首先,进入你的应用项目,用下面的命令安装copyfiles的依赖关系 注意:请使用-save-dev将其添加为devDependencies
npm install --save-dev copyfiles
或者你也可以在package.json中复制以下代码
"devDependencies": {
"copyfiles": "latest"
},
接下来,运行npm install命令来重新安装所有的依赖项。这将安装copyfiles库并复制到node_modules文件夹。
在package.json文件中,有一个脚本标签,添加下面一行代码
"scripts": {
"copy": "copyfiles source destination"
}
source: - 输入源目录或正则表达式文件target 。- 文件被复制到目标目录
最后,你可以通过在终端调用npm run copy 命令来编写脚本
npm copyfiles例子
我们来讨论一些例子
拷贝特定文件到目录
假设你在src/assets文件夹下有一个javascript文件。你如何只复制javascript文件到输出目录?
下面是用npm脚本编写的代码:
"copyjavascript": "copyfiles src/assets/*.js destination"
复制文件夹到目标目录
如果你想复制assets文件夹,assets包含js、css、images文件夹,这些文件需要复制到dist/assets文件夹中。
下面是npm脚本命令
"copyFolder": "copyfiles src/assets dest"
拷贝文件,但不重写这些文件
默认情况下,copyfiles 复制并覆盖目标文件夹中的文件。
有一个选项-s 或--soft 软拷贝,如果文件存在,就不覆盖文件。
下面是一个命令
copy -s src dest
复制带有嵌套路径的文件夹
如果你想复制assets/sass/到sass-lib文件夹,并使用相同的嵌套文件夹结构
-u 或者--up ,并提供数字,以保持嵌套的文件夹级别。
copyfiles -u 2 "./assets/sass/**" "./node_modules/sass-lib"
Nodejs copyfiles javascript代码示例
到目前为止,我们已经看到使用copyfiles可以作为命令行或npm脚本使用。你可以使用服务器端的nodejs
首先,你必须在你的JavaScript代码库中引入或导入这个库(ES6版本)。
var copyfiles = require('copyfiles');
语法:
copyfiles([filespaths], option, callbackfunction);
Filespaths是指输入和输出的路径和途径。路径是文件或目录的相对或绝对路径
下面是一个例子
const inputFolder = "./src/assets/";
const outputFolder = "./dist";
const copyfiles = require("copyfiles");
copyfiles([inputFolder}`, output], {}, (err) => {
if (err) {
console.log("Error occurred while copying",err);
}
console.log("folder(s) copied to destination");
});