Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从以前的typescript(.ts)文件中删除已编译的JS文件?_Javascript_Typescript_Gulp_Angular - Fatal编程技术网

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

Javascript 如何从以前的typescript(.ts)文件中删除已编译的JS文件?,javascript,typescript,gulp,angular,Javascript,Typescript,Gulp,Angular,我正在学习教程。以下是我的文件夹结构- ├── 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/目录。我用的是Gu

我正在学习教程。以下是我的文件夹结构-

├── 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/
目录。我用的是GulpTypeScript

例如,当我将文件
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
我想通过gulp任务自动删除这个
boot.js
。如何实现这一点?

安装gulp del

$ npm install --save-dev gulp del
创建任务

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

你可以找到关于gulp del的更多信息。

我来这里是看标题的,把gulp添加到混合物中不是一个解决方案。这就是我解决问题的方法

在npm构建脚本前面加上
rm-rf./js/&&

"scripts": {
    ...
    "build": "rm -rf ./js/ && tsc",
    ...
},
rm-rf./js/
f或完全删除r以下所有文件和目录。/js/


&&
表示,如果使用最新的tsc成功执行下一个命令

,则可以使用下面的命令执行清理

tsc --build --clean
我目前的tsc版本供您参考

$ tsc --version
Version 3.5.3
请注意--clean标志是的一部分,并且仅与之配合使用。

我使用来自的脚本

在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')

此解决方案的灵感来自。由于他的解决方案取决于您使用的操作系统,因此我添加了一个适用于任何操作系统的解决方案:

添加为开发人员依赖项:

"devDependencies": {
   "rimraf": "^3.0.1"
}
然后将这3个脚本添加到package.json中:

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

执行
npm run compile
时,编译前将清理
js/
文件夹。

此解决方案是对该解决方案的改进

安装rimraf
npm i rimraf-D

添加以下npm脚本

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

只要有人遇到以下问题,就可以使用npms automatic

: 我试图使用
tsc--build--clean
但有时,如果重命名了许多.ts文件,则此命令在mac上有效:

如果重命名了大量的.ts(适用于Mac用户),则要删除.js文件:

find-名称“*.js”-路径“./node_modules/*”-删除

如果在tsconfig文件中声明:true,您可能需要:

find-名称“*.d.ts”-路径“./node_modules/*”-删除


在删除文件之前,不要忘记使用git和Bash进行黑客攻击

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

您可以运行:
tsc-b您的入口点列表--clean
,如前所述

例子:
tsc-b src test--clean
将根据各自的
tsconfig.json
构建
src
test
目录,然后清理(删除)生成的
.js
文件

您可以拥有一个main
tsconfig.json
,只需在每个子文件夹配置文件中使用
{extend:“path_to_main\u tsconfig”}

建议:
在运行此命令之前,请使用
--dry
尝试此命令,以查看将发生什么情况。

如果您不幸使用了windows开发环境,如果您将
现金rm
添加为开发依赖项,也可以使用
rm
。类似地,如果保存为开发依赖项,您可以使用
rimraf
(恰当地命名为
rm-rf
),而不是作为开发依赖项使用。@samthecodingman作为记录,我选择了Windows开发人员:)我已经尝试过Mac和Linux,我对它们都感到不自在。我只是不喜欢他们,甚至是MacOS。在Windows中,一切都很顺利(至少对我来说),不管大多数开发人员多么讨厌它。
rimraf
适用于Windows机器<代码>“预构建”:“rimraf dist”,“构建”:“tsc-p tsconfig.release.json”也适用于服务器端项目和不使用gulp.Nope的项目。至少对我来说不是
tsc--version:version 3.5.3
tsc--build--clean
不执行要求的操作。我是作为日常任务执行的,不确定它为什么在您的环境中不起作用,您的问题的任何详细信息?无法看到“-clean”是编译器选项的一部分@Elias--clean标志是项目引用的一部分,并且只对其起作用。-clean不会清除所有outDir(已删除的TS文件仍在outDir中编译,但未清除…)我一直在想,为什么要添加另一个包
rimraf
,而
rm-rf
是一个更快的本地替代方案,几乎无处不在?@seeker\u of_bacon,因为它在使用WindowsUpvote时无法获得清晰的答案,但同时也能启发我关于预脚本的知识-谢谢!这似乎比以前复杂得多。你为什么推荐这个?因为当时我还不太清楚。我同意另一种解决方案更简单、更好。由OP将接受的答案更改为该答案。我希望他会