读取文件,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到你的项目目录并安装gulp
和gulp-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了解更多高级示例