如何将我的静态文件复制到打字稿表达项目中的输出位置?

时间:2019-07-05 11:49:11

标签: typescript express

我试图将输入目录中的静态文件复制到express中的输出目录中。我遵循this tutorial link,他们使用shell.js复制静态文件。

用于复制静态文件的代码在我的CopyAssets.ts中:

import * as shell from "shelljs";

shell.cp( "-R", "src/views", "dist/" );

和调用命令的脚本在我的package.json中为:

 "scripts": {
    "clean": "rimraf dist/*",
    "copy-assets": "ts-node tools/CopyAssets",
    "lint": "tslint -c tslint.json -p tsconfig.json --fix",
    "tsc": "tsc",
    "build": "npm-run-all clean lint tsc copy-assets",
    "dev:start": "npm-run-all build",
    "dev": "nodemon --watch src -e ts,hbs --exec npm run ",
    "start": "node .",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

当我运行npm run dev后没有复制我的脚本,为什么?

1 个答案:

答案 0 :(得分:0)

处于 dev 模式时,请使用ts-node,它使您可以运行TypeScript而不进行编译。

我使用npx执行本地安装的依赖项。

这是我的 package.json 脚本:

"scripts": {
    "clean": "npx rimraf ./build/ && npx rimraf ./log/",
    "prebuild": "npm run clean",
    "build": "npx tsc",
    "postbuild": "npx ts-node ./tools/build",
    "prod": "node ./app.js",
    "dev": "npx nodemon",
    "test": "npx jest --findRelatedTests"
}

要使用所有已编译的.ts文件和资产创建构建文件夹,请输入:

npm run build

!!! 使用npm scripts flavour

之前,npm运行prebuild,执行清理。

构建完成后,npm运行postbuild,该操作将复制您在 ./ build 文件夹中的所有资产和文件。


这是build.ts文件,用于复制所有资产和文件:

import shell from 'shelljs';

const buildFolder = './build/';

const files = new Set(['.env', 'LICENSE', 'README.md', 'package.json', 'package-lock.json']);
const folders = new Set(['./src/views', './src/public']);

// Copy Files
files.forEach((file) => {
  shell.cp('-R', file, buildFolder);
});

// Copy Folders
folders.forEach((folder) => {
  shell.cp('-R', folder, buildFolder);
});