NPM /反应:复制文件无法正常运行

时间:2018-09-12 01:43:51

标签: reactjs npm npm-run

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.

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

1 个答案:

答案 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 引用位置。如果某个位置没有通配符,则根本不需要引号。我添加了*标志,如果未复制文件,它将引发错误,这有可能在以后为您节省麻烦。