我有一个打字稿项目,当我运行gulp构建时,我在目录中删除了一个文件夹,打字稿为我重新创建了该目录(这是理想的结果)。但是,它似乎是用奇怪的权限创建的。当我执行时ls -l,我获得了使用删除rimraf然后使用typescript创建的目录的以下权限。$ ls -ldrwxrwxrwx 1 rnaddy rnaddy 512 Apr 1 10:48 srcd????????? ? ? ? ? ? types为什么显示问号?我认为这正在破坏我的构建,因为在构建时会出现错误,我认为这可能是问题所在。$ gulp build:watch[11:07:18] Using gulpfile ~\Documents\vscode\projects\red5\framework\gulpfile.js[11:07:18] Starting 'build:watch'...[11:07:18] Starting 'router'...rimraf: EPERM: operation not permitted, unlink 'C:\Users\rnaddy\Documents\vscode\projects\red5\framework\router\types'[11:07:20] 'router' errored after 1.99 s[11:07:20] Error: EPERM: operation not permitted, mkdir 'C:\Users\rnaddy\Documents\vscode\projects\red5\framework\router\types'[11:07:20] 'build:watch' errored after 2 s在我的gulp文件中执行的函数如下所示:const path = require('path')const gulp = require('gulp')const ts = require('gulp-typescript')const sourcemaps = require('gulp-sourcemaps')const rimraf = require('rimraf')const projects = { router: './router', server: './server', storage: './storage', session: './session', template: './template', middleware: './middleware', // Optional dependencies mysql: './mysql'}const tasks = [ 'router', 'middleware', 'template', 'storage', 'session', 'server', // Optional dependencies 'mysql']/** * Builds the project * @param {string} projectRoot * @returns {Promise<void>} */async function makeProject(projectRoot) { let err = await new Promise(resolve => rimraf(path.join(projectRoot, 'types'), (err) => resolve(err))) if (err) { console.error('rimraf:', err.message) // return resolve(false) } let tsResult = await new Promise(async resolve => { let tsProject = ts.createProject(path.join(projectRoot, 'tsconfig.json')) let tsResult = tsProject.src() .pipe(sourcemaps.init()) .pipe(tsProject()) .on('finish', () => resolve(tsResult)) })
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
看来问题是因为rimraf
。除了删除目录types
,我只需要删除目录的内容。
所以我只需要更改types
为types/*
,它看起来像这样:
rimraf(path.join(projectRoot, 'types/*'), (err) => /* do stuff*/)
添加回答
举报
0/150
提交
取消