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
文件
您可以拥有一个maintsconfig.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将接受的答案更改为该答案。我希望他会