文档章节

node js 打包文件

宇哲不犹豫
 宇哲不犹豫
发布于 2015/07/09 09:58
字数 376
阅读 26
收藏 0

node js 、 依赖包JSZIP

打包 压缩

fileCompression: (folderPath) ->
    zip = new JSZip()
    zipPath = pathM.join folderPath,'..',pathM.basename(folderPath)+'.zip'
    flag = "root"
    # 递归函数 当遇到文件或者文件夹里面没有文件时结束
    compressionZip= (node,filePath,isroot) =>
      # windows 和 linux 文件路径兼容处理
      stats = fs.statSync(filePath)
      # 1、将 windows 文件路径的 \ 转为 linux 文件路径的 /
      str1=node.replace(/\\/g,"/")
      # 2、切割路径
      strs=str1.split("/")
      tmp = zip
      if strs[0] is "."
        isroot = true
      # 3、以 tmp 保存当前 最外层文件夹
      getLast = (filePath) =>
        tmp = tmp.folder(filePath)
      if strs isnt null and strs.length isnt 0
        getLast fileItem for fileItem in strs
      # 4、保存文件夹或者文件
      if stats.isFile()
        fileName = pathM.basename(filePath)
        if isroot
          zip.file(fileName,fs.readFileSync(filePath))
        else
          tmp.file(fileName,fs.readFileSync(filePath))
      else
        if flag is "root"
          flag = "children"
          folderZipPath = node
        else
          folderZipPath = pathM.join node,pathM.basename(filePath)
          if isroot
            zip.folder(pathM.basename(filePath))
          else
            tmp.folder(pathM.basename(filePath))
        fileList = fs.readdirSync(filePath)
        if fileList isnt null and fileList.length isnt 0
          compressionZip folderZipPath,pathM.join(filePath,filePathItem),false for  filePathItem in fileList
    compressionZip ".",folderPath,true
    # 5、保存 zip
    content = zip.generate({type:"nodebuffer",compression:"DEFLATE"})
    fs.writeFileSync(zipPath,content)
    console.log "打包完了"


解压包

UnCompressFile: (zipPath, success) ->
    unzipPath = pathM.join zipPath,".."
    cb = (err, data) =>
      if err
        throw err
      object = new JSZip(data)
      readAndwrite = (zipObject) ->
        savePath = pathM.join unzipPath,zipObject.name
        if zipObject.dir
          if fs.existsSync(savePath)
            console.log "文件夹已存在,文件夹中的相同文件将被覆盖"
          else
            fs.mkdirSync(savePath)
        else
          tmp = savePath.substring(savePath.lastIndexOf('.'))
          tmp = tmp.toUpperCase()
          # 当文件问 图片时 使用 zipObject.asNodeBuffer() 其他的使用zipObject.asText()
          if tmp is '.PNG' or tmp is '.GIF' or tmp is '.JPG' or tmp is '.JPEG' or tmp is '.BMP'
            fs.writeFileSync(pathM.join(unzipPath,"icon3.png"),zipObject.asNodeBuffer())
          else
            fs.writeFileSync(savePath,zipObject.asText())
      readAndwrite zipObject for fileName , zipObject of object.files
      if typeof success isnt "undefined"
        success()
    fs.readFile(zipPath,cb)








© 著作权归作者所有

下一篇: JS 字符串函数
宇哲不犹豫
粉丝 0
博文 44
码字总数 18225
作品 0
汕尾
程序员
私信 提问
SCRIPT1003:IE11报错,无法打开vue+elementui项目,谷歌等正常

问题:IE11报错SCRIPT1003:缺少":"... 常见解决方式 1. 安装babel-polyfill插件,并在入口文件中引入 2. 安装babel-polyfill插件,如果是webpack打包,则在webpack配置中添加 使用上述方式后...

YXMBetter
2018/12/29
0
0
RequireJS进阶(一)

为了应对日益复杂,大规模的JavaScript开发。我们化整为零,化繁为简。将复杂的逻辑划分一个个小单元,各个击破。这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元。如果...

彭博
2012/06/07
2.4K
0
js本地存储和增量更新rstoreinc插件使用

用增量更新这个算法写了一个requirejs插件storeinc,使用方法如下: 首先使用修改后的r.js来进行混淆打包,构建配置如下(请看js/requirejs下的build.js): ({ appDir: "../demo/js", baseUrl: ...

卢勇福
2014/03/05
0
0
Webpack入门到精通(1)

前言 什么是webpack 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中...

励步前端团队
05/21
0
0
webpack 静态资源集中输出的方法示例

目录结构 copy-webpack-plugin 工作中会有一些已经存在但在项目中没有引用的图片资源或者其他静态资源(比如设计图、开发文档),这些静态资源有可能是文档,也有可能是一些额外的图片。打包...

peakedness丶
01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
3
0
通过四道常问面试题,带你了解什么是数据库分库分表

编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展。 其次:本文为纯干货,建议先转发...

老道士
今天
6
0
springmvc 整体流程

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR......

architect刘源源
今天
3
0
磁盘管理

先来看两个查看的命令 查看磁盘使用情况df 用法:df, df -h, df -m, df -k 查看目录或文件大小 用法:du -sh, du -sm, du -s(默认以k为单位) 新加一块盘如何操作 步骤:分区(可选)--> 格...

wzb88
今天
3
0
在 Linux 下确认 NTP 是否同步的方法

NTP 意即网络时间协议Network Time Protocol,它通过网络同步计算机系统之间的时钟。NTP 服务器可以使组织中的所有服务器保持同步,以准确时间执行基于时间的作业。NTP 客户端会将其时钟与 ...

Linux就该这么学
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部