NestJS - 资产和视图文件夹未添加到 dist



NestJS - 构建后未将资产和视图文件夹添加到dist文件夹中

我的文件夹结构类似于以下内容:

/assets
/img
/fonts
/views
failure.hbs
success.hbs
/src
main.ts
/users
users.controller.ts

您可以通过将这些行添加到nest-cli.json文件中来将这些文件夹复制到dist文件夹中:

"compilerOptions": {    
"assets": [
{
"include": "../assets",
"outDir": "dist/public",
"watchAssets": true
},
{
"include": "../views",
"outDir": "dist/views",
"watchAssets": true
}
],
"watchAssets": true
}

还要确保在构建应用程序时包含nest-cli.json(例如:来自Dockerfile)

我来到这个线程进行 NestJS + EJS 设置(派对迟到),下面是我的目录结构。

/views
index.ejs
/src
main.ts

注意:在"nest-cli.json"中更改compilerOptions后修复了该问题。

"compilerOptions": {    
"assets": [
{
"include": "views",
"outDir": "dist",
"watchAssets": true
}
],
"watchAssets": true,
"deleteOutDir": true
}

我在运行yarn build时添加了自己的build.js脚本:

package.json

"build": "nest build && node build.js"

它将视图和资产文件夹复制到 dist 构建文件夹中。

build.js

const fs = require('fs');
const path = require('path');
copyFolderRecursiveSync('views', 'dist');
copyFolderRecursiveSync('assets', 'dist');
function copyFileSync(source, target) {
let targetFile = target;
// If target is a directory, a new file with the same name will be created
if (fs.existsSync(target)) {
if (fs.lstatSync(target).isDirectory()) {
targetFile = path.join(target, path.basename(source));
}
}
fs.writeFileSync(targetFile, fs.readFileSync(source));
}
function copyFolderRecursiveSync(source, target) {
let files = [];
// Check if folder needs to be created or integrated
const targetFolder = path.join(target, path.basename(source));
if (!fs.existsSync(targetFolder)) {
fs.mkdirSync(targetFolder);
}
// Copy
if (fs.lstatSync(source).isDirectory()) {
files = fs.readdirSync(source);
files.forEach(function (file) {
const curSource = path.join(source, file);
if (fs.lstatSync(curSource).isDirectory()) {
copyFolderRecursiveSync(curSource, targetFolder);
} else {
copyFileSync(curSource, targetFolder);
}
});
}
}

最新更新