Django 2.0, Node.js 8.11.4
我有一个格式为djanog的项目:
reactify/
└── src/
├── reactify-ui/
| ├── build/
| | └── static/
| | └── js/
| | └── main.3425.js
| └── package.json
└── staticfiles/
└── js/
└── reactify-django-us.js
我想用\reactify\src\staticfiles\js
中的内容替换\reactify\src\reactify-ui\build\static\js\*
的内容
我的packages.json
看起来像这样
"scripts": {
...
"copy-build-js": "copyfiles -f 'build/static/js/*.js' '../staticfiles/js/'",,
...
}
运行npm copy-build-js
时,得到以下输出:
> reactify-ui@0.1.0 copy-build-js C:\Users\Owner\dev\reactifydjango\src\reactify-ui
> copyfiles -f 'build/static/js/*.js' '../staticfiles/js/'
看起来好像可以,但是当我在目标位置../staticfiles/js/
中检查文件时,它没有改变。
我通过
changing the file before I run the command,
do an `ls -lrth` to get the timetamp,
wait a minute so the timestamp changes,
run the command `npm copy-build-js`,
and then doing an `ls -lrth` on the target location and seeing that the timestamp isn't post hasn't changed.
I also look at the file and it is the same.
为什么复制文件不起作用?
答案 0 :(得分:1)
您的结构正确,但是copyfiles
软件包中有一些您遗漏的怪癖。使用它作为脚本:
"copy-build-js": "del /F \"../staticfiles/js\" && copyfiles -E -f \"./build/static/js/*.js\" ../staticfiles/js"
此处必须使用双引号,因此在每个双引号之前都需要使用黑色斜杠将其转义。
copyfiles
包没有选项来替换目录中的所有文件,即使文件名不存在,因此,您首先必须运行del /F \"../staticfiles/js\"
来删除{{ 1}}目录。该命令假定您使用的是Windows。
然后您运行src/staticfiles/js
。您错过的是,与此包(copyfiles -E -f \"./build/static/js/*.js\" ../staticfiles/js
)一起使用通配符/通配符时,必须 double 引用位置。如果某个位置没有通配符,则根本不需要引号。我添加了*
标志,如果未复制文件,它将引发错误,这有可能在以后为您节省麻烦。