【问题标题】:How to copy handlebars files to dist folder如何将车把文件复制到 dist 文件夹
【发布时间】:2019-05-28 03:41:48
【问题描述】:

我正在使用 Typescript,它从 src/ 编译到 lib/ 文件夹,以及 Babel,它从 lib/ 编译到 dist/

我遇到的问题是,当我编译应用程序时,src/email_templates/ 中的 .handlebars 文件没有被复制到 dist/。因此,当我运行该应用程序时,由于 dist/email_templates/ 不存在而出现错误。

我正在使用nodemailer-handlebars 包并尝试将email_templates/ 文件夹移动到项目根目录并将viewPath 设置为该文件夹,但是这也失败了,因为应用程序位于var/www/api.my-domain.com/。似乎我在api.my-domain.com 文件夹名称中有句点导致 viewPath 失败并出现错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:125:11)
    at Object.resolve (path.js:1080:7)
    at ExpressHandlebars._resolveLayoutPath (/var/www/api.my-domain.com/node_modules/express-handlebars/lib/express-handlebars.js:342:17)
    at ExpressHandlebars.<anonymous> (/var/www/api.my-domain.com/node_modules/express-handlebars/lib/express-handlebars.js:223:35)

这是我构建应用程序的 package.json 脚本:

"build": "tsc && babel ./lib --out-dir ./dist ",

如何更改它以删除dist/email_templates 的当前内容,然后将src/email_templates 的内容复制到dist/email_templates

【问题讨论】:

    标签: node.js typescript handlebars.js babeljs npm-scripts


    【解决方案1】:

    使用cpx包解决:https://www.npmjs.com/package/cpx

    npm install cpx --save-dev
    

    包.json:

    - "build": "tsc && babel ./lib --out-dir ./dist",
    + "build": "tsc && babel ./lib --out-dir ./dist && cpx \"./src/email_templates/**/*\" ./dist/email_templates --clean",
    
    npm run build
    

    【讨论】:

      【解决方案2】:

      删除dist/email_templates的当前内容,然后将src/email_templates的内容复制到dist/email_templates

      另外两个 npm 包

      【讨论】:

      • 谢谢。我刚刚找到了 cpx 包 (npmjs.com/package/cpx),它有一个 --clean 标志,不需要也使用 rmraf。我不相信 mv 在 CLI 中工作(在他们的仓库中有一个关于它的未解决问题)但 cpx 工作正常。
      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 2015-11-16
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      相关资源
      最近更新 更多