如何从以前的typescript(.ts)文件中删除已编译的JS文件

How to delete compiled JS files from previous typescript(.ts) files?

本文关键字:文件 删除 JS 编译 typescript ts      更新时间:2023-09-26

我正在学习Angular 2快速入门教程。以下是我的文件夹结构-

├── gulpfile.js
├── index.html
├── js
|   ├── app.component.js
|   └── boot.js
├── source
|   ├── app.component.ts
|   └── boot.ts
├── node_modules
    ├── module 1
    └── module 2

我的typescript文件在source/目录中。我正在将它编译到js/目录中。我用的是打字稿。

问题是,例如,当我将文件boot.ts重命名为bootstrap.ts并再次编译时,会创建相应的bootstrap.js文件,但旧的boot.js文件仍保留在js/目录中。

现在文件夹结构如下-

├── gulpfile.js
├── index.html
├── js
|   ├── app.component.js
|   └── bootstrap.js
|   └── boot.js
├── source
|   ├── app.component.ts
|   └── bootstrap.ts
├── node_modules
    ├── module 1
    └── module 2

我想通过gump任务自动删除这个boot.js。如何做到这一点?

使用最新的tsc,您应该可以使用以下命令进行清理

tsc --build --clean

我当前的tsc版本供您参考

$ tsc --version
Version 3.5.3

请注意,--clean标志是项目引用的一部分,只能与它一起使用。

我来到这里看到了标题,在混合物中加入gullow并不是一个解决方案。以下是我解决问题的方法。

rm -rf ./js/ && 作为npm构建脚本的前缀

"scripts": {
    ...
    "build": "rm -rf ./js/ && tsc",
    ...
},

rm -rf ./js/f强制删除r下面的所有文件和目录/bash 中的js/doku-rm

&&表示,如果成功,则执行下一个命令&在bash 中

回答时的标题:";如何从以前的typescript(.ts)文件中删除已编译的JS文件"

此解决方案的灵感来自@Akash Kurian Jose的回答。由于他的解决方案取决于你使用的操作系统,我添加了一个适用于任何操作系统的解决方案:

添加rimraf作为开发依赖项:

"devDependencies": {
   "rimraf": "^3.0.1"
}

然后将这3个脚本添加到您的包中。json:

"rimraf": "./node_modules/rimraf/bin.js",
"clean" : "rimraf js/",
"compile": "npm run clean && tsc -p ./"

当执行npm run compile时,js/文件夹将在编译前被清除。

安装gulp-del.

$ npm install --save-dev gulp del

创建任务。

var gulp = require('gulp');
var del = require('del');
gulp.task('clean:output', function () {
  return del([
    'js/'
  ]);
});
gulp.task('default', ['clean:output']);

你可以在这里找到更多关于gump del的信息。

此解决方案是对GabrielBB解决方案的改进。

安装轮辋npm i rimraf -D

添加以下npm脚本

"clean": "rimraf js/",
"prebuild": "npm run clean",
"build": "tsc",

这就利用了npms自动预脚本

Windows用户可以在package.json上添加以下预构建脚本-一个批处理cmd脚本-它将在构建

package.json:
{
  "scripts": {
    "prebuild": "if exist <outDir> (rmdir /Q /S <outDir>)",
    "build": "tsc"
  },
}

替换";CCD_ 16";与您的CCD_ 18中声明的实际CCD_。

如果省略if exist命令,它将抛出一个错误。

即使您的主要终端应用程序是PowerShell,它也应该正确运行。

我从这里使用脚本。

在package.json中添加脚本:

"build": "node jsDelete.js && npx tsc -w"

并添加jsDelete.js:

const fs = require('fs');
const Path = require('path');
const deleteFolderRecursive = function(path) {
  if (fs.existsSync(path)) {
    fs.readdirSync(path).forEach((file, index) => {
      const curPath = Path.join(path, file);
      if (fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
};
deleteFolderRecursive('path_to_folder')

如果有人会遇到这个问题:我试着用tsc --build --clean但有时如果你重命名了很多.ts文件,这个命令在mac:上有效

删除.js文件,如果你重命名了很多.ts(这是为Mac用户):

find . -name '*.js' ! -path './node_modules/*' -delete

如果tsconfig文件中的declaration: true,您可能需要:

find . -name '*.d.ts' ! -path './node_modules/*' -delete

在删除文件

之前,不要忘记git commit

使用Git和Bash 破解

git add . && git stash &&  find . ''( -name '*.js' -o -name '*.js.map' '') ! -path './node_modules/*' -delete  && git restore . && git stash pop

简单地移动到ur src文件,并使用此模式运行删除文件

cd src
rm -rf */**/*.js

您可以运行这里提到的:tsc -b YOUR_ENTRYPOINT_LIST --clean

示例:

tsc -b src test --clean将根据各自的tsconfig.json构建srctest目录,然后清除(移除)生成的.js文件。

您可以有一个主tsconfig.json,只需在每个子文件夹配置文件中使用{extend: "path_to_main_tsconfig"}即可。

建议:

在运行此命令之前,请使用--dry进行尝试,看看会发生什么。