GNU复制具有-n
标志以进行复制而不会被覆盖,如下所示:
cp -n config.ini.dist config.ini
是否可以通过命令行从the npm package ncp获得相同的功能?
我的目的是为npm软件包复制一个分布式配置文件:
"scripts": {
"prepare": "ncp config.dist.ini config.ini -n",
...
但是它不知道-n
标志并覆盖现有文件。
答案 0 :(得分:1)
如果您向下滚动所提供的文档链接的页面,则会发现将clobber选项设置为false可以满足您的要求。
options.clobber-布尔值= true。如果设置为false,则ncp不会覆盖已经存在的目标文件。
对于命令行使用,从其源代码中可以看出,CLI不会向CLI公开'clobber'选项。幸运的是,您可以使用自己的小实用程序轻松修复此问题:
//./bin/ncp
#!/usr/env node
const ncp = require('ncp').ncp;
ncp.limit = 16;
// note: also add error handling. I'm also being explicit here, you can
// use their bin file for a more extensive example: https://github.com/AvianFlu/ncp/blob/master/bin/ncp
const source = process.argv[2];
const destination = process.argv[3];
// note you can get fancier and read the options in from the CLI if you want, I'm just assuming you know what you want to always use here.
ncp(source, destination, { clobber: false }, function (err) {
if (err) {
return console.error(err);
process.exit(1);
}
console.log('done!');
process.exit(1):
});
然后在package.json中,您可以
"scripts": { "prepare": "./bin/ncp config.ini.dist config.ini"}}
希望有帮助。
答案 1 :(得分:0)
您可以在这样的Windows中使用cp
"scripts": {
"build": "ng build && npm run build:server && npm run cp",
"build:server": "tsc --build server/tsconfig.json",
"cp": "@powershell cp server/config.json,server/notice.json dist/server",
...
'@ powershell'将作为powershell命令运行cp