猿问

Gulp:建筑打字稿项目正在创建权限问题

我有一个打字稿项目,当我运行gulp构建时,我在目录中删除了一个文件夹,打字稿为我重新创建了该目录(这是理想的结果)。


但是,它似乎是用奇怪的权限创建的。当我执行时ls -l,我获得了使用删除rimraf然后使用typescript创建的目录的以下权限。


$ ls -l

drwxrwxrwx 1 rnaddy rnaddy  512 Apr  1 10:48 src

d????????? ? ?      ?         ?            ? 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))

  })


BIG阳
浏览 127回答 1
1回答

繁星点点滴滴

看来问题是因为rimraf。除了删除目录types,我只需要删除目录的内容。所以我只需要更改types为types/*,它看起来像这样:rimraf(path.join(projectRoot,&nbsp;'types/*'),&nbsp;(err)&nbsp;=>&nbsp;/*&nbsp;do&nbsp;stuff*/)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答