我试图将输入目录中的静态文件复制到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
后没有复制我的脚本,为什么?
答案 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);
});