之前使用预处理器一直是基于vim插件autocommand,最近和同事协作开发,vim入门太陡峭,抽了点时间用browser-sync实现了类似功能。具体功能如下:自动检测jade、sass、livescript等源码文件的改动,编译对应的html、css、js,更新改动到浏览器中打开的页面。
明确几个定义:
1. browser-sync nodejs插件,官方说明 Time-saving synchronised browser testing。
2. 前端预处理器 jade、sass、livescript。
3. 工作流 使用browser-sync整合jade、sass、livescript完成开发的一套流程。
依赖:
nodejs
npm package: jade、livescript、browser-sync
ruby
gem package: sass
工作目录:
说明:_source目录下存放预处理器源代码,html目录存放生成的html、css、js等。
在workspace目录下创建 browserSync.ls 具体代码如下:
path = require \path exec = require \child_process .exec browserSync = require \browser-sync .create! # config {{{ outputDir = 'html' cssOutputDir = "#outputDir/css" jsOutputDir = "#outputDir/js" reloadWatchFile = '' # "#outputDir/*.html" # "#jsOutputDir/*.js" # "#outputDir/img/*.*" compileWatchFile = "_source/jade/*.jade" "_source/sass/*.sass" "_source/live/*.ls" autoCompileFile = true # }}} # getTimeToken {{{ getTimeToken = -> currDate = new Date() hours = currDate.getHours() minutes = currDate.getMinutes() seconds = currDate.getSeconds() if hours < 10 hours = "0#hours" if minutes < 10 minutes = "0#minutes" if seconds < 10 seconds = "0#seconds" "#hours:#minutes:#seconds" # }}} # compileTask {{{ getCompileCmdAndFileName = (file, ext) -> filename = path.basename file, ext switch ext case '.jade' then compileFileName = "#outputDir/#{filename}.html" cmd = "jade -Po #outputDir #file" case '.sass' then compileFileName = "#cssOutputDir/#{filename}.css" cmd = "sass --sourcemap=none --style compact #file|sed '/^@charset/d'>#compileFileName" case '.coffee' then compileFileName = "#jsOutputDir/#{filename}.js" cmd = "coffee --no-header -bco #jsOutputDir #file" case '.ls' then compileFileName = "#jsOutputDir/#{filename}.js" cmd = "lsc --no-header -bco #jsOutputDir #file" default compileFileName = cmd = '' [cmd, compileFileName] compileTask = (file, ext, reload) !-> cmdIndex = -1 try [cmd, filename] = getCompileCmdAndFileName file, ext if not cmd or not filename console.log "cmd not define. file: #file ext: #ext" # exec callback execCallback = (err, stdo, stde) !-> if err is null and not stde if cmdIndex is -1 console.log "[#{getTimeToken!}] compiled #filename" reload filename if reload else execCmd() else console.log err || stde # execute command do execCmd = !-> if Array.isArray cmd currCmd = cmd[++cmdIndex] if cmd.length <= cmdIndex+1 ``cmdIndex = -1;`` else currCmd = cmd if currCmd exec currCmd, execCallback compileCallback = (file) !-> ext = path.extname file filename = path.basename file # ignore partial file if filename.charAt(0) is '_' return undefined switch ext case '.jade', '.coffee', '.ls', '.sass' # compileTask file, ext # case '.sass' compileTask file, ext, browserSync.reload default console.log 'unknown file type.' # }}} # browserSync {{{ browserSync.init do server: baseDir: outputDir index: \index.html open: false if reloadWatchFile and reloadWatchFile.length browserSync.watch reloadWatchFile .on \change, browserSync.reload wacher = browserSync.watch compileWatchFile .on \change, compileCallback # auto compile file if autoCompileFile wacher.on \add, compileCallback # }}} # vim: set sw=2 ts=2 sts=2 et fdm=marker:
使用方法如下:
cd workspace
lsc browserSync.ls
* lsc 是 livescript的命令,使用npm 全局安装 livescript 后方可使用。
配置说明:
outputDir html文件的输出目录,web server的根目录。
cssOutputDir css文件输出目录。
jsOutputDir js文件输出目录。
reloadWatchFile 检测改动的目录,如果文件发生变更,会更新到打开的页面中。html/css/js已自动更新,默认可留空。
compileWatchFile 监测的源码文件,如果发生变化执行编译任务。
autoCompileFile 自动编译文件,设为true时,每次启动会把所有的源码文件编译一遍。
2023年9月22日 16:55
Haryana board Every year Conducted 10th Class Final Exam Month of March to April, This Exam Date Sheet Available at official Website, HBSE has Disclosed the Class Syllabus for Board Exam 2024, Latest Study Materiel were Uploaded in the official website of UP board for Pdf Format Download,Students are Therefore Informed to Collect them From online via the official web portal HBSE 10th Class Textbook 2024 Haryana Class Syllabus 2024 is Available in Hindi, English, Punjab Medium All Subjects,Haryana Board has Recently Upload the HBSE new Syllabus 2024 That come to aid at the Preparation Time for the Students, it gets easy to for the Students to Prepare, Haryana Syllabus 2024 also Called For All the Subjects and Students are advised to Download the Subject wise Study Materiel from online.