0

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.

为什么复制文件不起作用?

4

1 回答 1

1

你的结构是正确的,但是这个copyfiles包有一些你错过的怪癖。将此用作您的脚本:

"copy-build-js": "del /F \"../staticfiles/js\" && copyfiles -E -f \"./build/static/js/*.js\" ../staticfiles/js"

此处的双引号是必需的,因此您需要在每个前添加黑色斜线来转义它们。

copyfiles即使文件名不存在,该软件包也没有替换目录中所有文件的选项,因此首先您必须运行del /F \"../staticfiles/js\"以删除目录中的所有文件src/staticfiles/js。此命令假定您使用的是 Windows。

然后你跑copyfiles -E -f \"./build/static/js/*.js\" ../staticfiles/js。您错过的是,在此包 ( *) 中使用通配符/glob 时,您必须引号该位置。如果某个位置没有通配符,则根本不需要引号。我在-E标志中添加了如果不复制文件将引发错误的标志,这可能会在以后为您省去麻烦。

于 2018-09-12T13:10:50.967 回答