读取文件,replace脚本标记

我一直在为这一天的大部分工作,是时候寻求帮助。

我正在创build一个在webpack构builddist文件夹后运行的脚本。 我正在使用不允许HTML中的脚本标记的服务器框架。

在webpack构builddist文件夹之后,我将获取该文件夹并创build一个新文件夹进行部署。 我想从我的webpack文件夹中加载大部分javascript的html文件,并使用我可以在服务器框架上使用的“脚本式”标签。

这是它的样子:

Webpack文件:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Proof of Concept</title> </head> <body> <div id="app" /> <script src='./project/client-js.js'></script> </body> </html> 

我需要删除脚本标签,而不是:

我需要创build的文件来部署:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Proof of Concept</title> </head> <body> <div id="app" /> <?!= include('client-js.js') ?> </body> </html> 

我的想法是

  • 使用节点的fs.readFile读入webpack dist文件
  • findhtml文件中的所有脚本标签,
  • 用文件名parsingsrcstring,
  • 从文件/string中删除脚本标记
  • 插入我需要用我的服务器框架为我所有的js文件的语法。

我花了大部分时间试图重新创build我列出的步骤。 我已经尝试过reg-ex来查找所有的脚本标记(不幸的是,我不是一个带有正则expression式的guru),把我的string分解成一个数组,最终,我无法想出一个解决scheme。

如果任何人都可以expression自己的想法或想法如何解决这个问题,我将不胜感激。 这是我需要的构build过程的最后一步。

构build工具是专门做这种任务; 使用gulp就像下面这样简单:

全球安装gulp:

 npm install gulp-cli -g 

cd到你的项目目录并安装gulpgulp-html-replace

 npm install gulp gulp-html-replace --save-dev 

做一个gulpfile.js

 var gulp = require('gulp'); var htmlreplace = require('gulp-html-replace'); gulp.task('default', function() { gulp.src('index.html') .pipe(htmlreplace({ js: { src: 'client-js.js', // Also could be an array: ['1.js', '2.js'] tpl: "<?!= include('%s') ?>" } })) .pipe(gulp.dest('build/')); }); 

并运行gulp 。 完成。


以下index.html(注意添加了这个区域的两条评论将被replace):

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Proof of Concept</title> </head> <body> <div id="app" /> <!-- build:js --> <script src='./project/client-js.js'></script> <!-- endbuild --> </body> </html> 

会变成:(并且你的index.html页面已经准备好在build文件夹下):

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Proof of Concept</title> </head> <body> <div id="app" /> <?!= include('client-js.js') ?> </body> </html> 

请参阅gulp-html-replace了解更多高级示例