zoukankan      html  css  js  c++  java
  • 对www.518shengmao.com站资源打包,采用vue Node.js

    最近闲游时间比较多,于是想搞个网站练练手,首先选域名在godday里选了个www.518shengmao.com,买了个1元的阿里云服务器,接下来程序了。

    采用vue+nodejs来开发的

    一、NodeJs环境安装与配置

    关于什么是NodeJs就不详细介绍,简要说明,它就是用javascript 方式去操作系统资料的一个开发环境。是一个桥梁平台。

    大家可以去官网下载最新版本的,安装后进行环境变量的配置。

    下载》  NodeJs  选择左边绿的下载安装就可以

    关于环境变量的配置,百度搜索很多, 点击这里去看看吧

    二、gulp安装与使用

    首先,gulp是基于nodejs 平台开发出来的,进行对静态资源的打包与发布的前端开发工具之一。当然也有webpack等等一些打包工具。

    由于是基于nodejs 所以,我们用npm 来进行 对gulp的安装。(npm 是包管理器,现在一般安装完nodejs就会自己带上)。

    npm 一般是从国外下载包,所以想快点下载的话,可以镜像切换。如何切换,点击这里《npm镜像切换》

    当然还有直接使用,cnpm(这个是淘宝为国内打造的一个镜像),可以通过npm 去安装cnpm 就可以了。

    nodejs开发必不可少的就是package.json(它就是用来管理,通过npm 或cnpm 下载的包与发布包的一些配置)。

    所以,我们要建一个package.json包,并指明一些配置,关于它的每项配置说明大家可以自己找一下资料,很多的。

    现在看一下简要package.json如下:

    {
    "name": "typing-src",
    "realname": "typing-ui",
    "version": "2.0.1",
    "scripts": {
    "build": "gulp",
    "watch": "gulp watch"
    },
    "author": [
    "admin <admin@91uu.net>"
    ],
    "homepage": "https://www.91uu.net",
    "devDependencies": {
    "del": "^2.2.2",
    "gulp": "^3.9.1",
    "gulp-concat": "^2.6.0 ",
    "gulp-header": "^1.8.8",
    "gulp-if": "^2.0.1",
    "gulp-minify-css": "^1.2.4",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^2.6.4",
    "gulp-uglify": "^1.5.4",
    "gulp-zip": "^4.0.0"
    },
    "dependencies": {
    "gulp-html-replace": "^1.6.2",
    "gulp-minify-html": "^1.0.6",
    "gulp-processhtml": "^1.2.0",
    "gulp-util": "^3.0.8"
    }
    }
    建好了之后,我们通过cmd 指定到package.json 这个目录 ,在命令行工具执行cnpm install 就可以安装相关的依懒包了。

    那这个也是我们后面要写gulpfile.js文件做准备,其中scripts这个选项是后面我们要执行打包的命令。

    为什么一定要gulpfile.js文件名,因为gulp命令自动会读取这个默认文件。

    接下来创建一个gulpfile.js文件,内容如下:


    var pkg = require('./package.json');
    //获取参数
    var argv = require('minimist')(process.argv.slice(2), {
    default: {
    ver: 'all'
    }
    })
    ,resourcesPatch = '你要打包的读取的目录'
    ,outPath = resourcesPatch+'dist/'
    ,outStaticPath = outPath+'目录1/'
    ,outTplPath = outPath+'templates/'
    ,staticPath = resourcesPatch+'目录1/'
    //发行版本目录
    ,releaseDir = './' + pkg.version
    ,release = releaseDir

    //目标木
    ,destDir = function(ver){
    return ver ? release : function(){
    return argv.rc ? 'rc' : 'dist'
    }();
    };

    var fs = require('fs');
    var path = require('path');
    var merge = require('merge-stream');
    var gulp = require('gulp');
    var uglify = require('gulp-uglify');
    var minify = require('gulp-minify-css');
    var minifyhtml = require('gulp-minify-html');
    var htmlreplace = require('gulp-html-replace');
    //var processhtml = require('gulp-processhtml');
    var concat = require('gulp-concat');
    var sourcemaps = require('gulp-sourcemaps');
    var rename = require('gulp-rename');
    var header = require('gulp-header');
    var del = require('del');
    var gulpif = require('gulp-if');
    var minimist = require('minimist');
    var zip = require('gulp-zip');


    //注释
    var note = [
    '/** <%= pkg.realname %>-v<%= pkg.version %> <%= pkg.license %> License By <%= pkg.homepage %> */ <%= js %>'
    ,{pkg: pkg, js: ';'}
    ];
    /*
    * 读取目录文件并创建打包任务,递归读取
    */
    var creatTasks = function (ops) {
    var doDir=ops.doDir,type=ops.type;
    var files = fs.readdirSync(doDir),tasks=[],item,dir;
    for(var i=files.length-1;i>=0;i--){
    if(fs.statSync(path.join(doDir, files[i])).isDirectory()){
    tasks.concat(creatTasks({
    doDir:doDir+files[i]+'/',
    ver:ops.ver,
    uirPath:ops.uirPath,
    outDir:ops.outDir,
    type:ops.type
    }));
    }else{
    item=gulp.src(doDir+files[i]).pipe(type=="js"?uglify():minify({
    compatibility: 'ie7'
    }))
    //.pipe(header.apply(null, note))//这个会影响有@charset "utf-8"; 的样式问题
    .pipe(gulp.dest(ops.outDir+doDir.replace(ops.uirPath,'/')));
    tasks.push(item);
    };
    }
    return tasks;
    };

    var taskList = {
    web_js:function(ver) {
    let uirPath = staticPath +'/web/js/';
    let dir = destDir(ver);
    let outDir = outStaticPath +'/'+ dir+'/web/js/';
    let tasks = creatTasks({
    doDir:uirPath,
    ver:ver,
    uirPath:uirPath,
    outDir:outDir,
    type:'js'
    });
    return merge(tasks);
    }
    ,web_css:function(ver) {
    let uirPath = staticPath +'/web/css/';
    let dir = destDir(ver);
    let outDir = outStaticPath + dir+'/web/css/';
    let tasks = creatTasks({
    doDir:uirPath,
    ver:ver,
    uirPath:uirPath,
    outDir:outDir,
    type:'css'
    });
    return merge(tasks);
    }
    ,common_js_modules:function(ver) {
    let uirPath = staticPath +'/common/js/modules/';
    let dir = destDir(ver);
    let outDir = outStaticPath +dir+'/common/js/modules/';
    let tasks = creatTasks({
    doDir:uirPath,
    ver:ver,
    uirPath:uirPath,
    outDir:outDir,
    type:'js'
    });
    return merge(tasks);
    }
    //有些资源不打包,但是要复制到对应目录
    ,copy_commonJsLib:function(ver){
    let uirPath = staticPath +'/common/js/lib/**/*';
    let dir = destDir(ver);
    let outDir = outStaticPath+ dir+'/common/js/lib/';
    return gulp.src(uirPath).pipe(gulp.dest(outDir));
    }
    }
    //添加任务
    gulp.task('web_js', taskList.web_js);
    gulp.task('web_css', taskList.web_css);
    gulp.task('copy_webCssIcon', taskList.copy_webCssIcon);
    gulp.task('copy_webImages', taskList.copy_webImages);

    //清理
    gulp.task('clear', function(cb) {
    return del(['./'+ (argv.rc ? 'rc' : 'dist') +'/*'], cb);
    });
    gulp.task('clearRelease', function(cb) {
    return del([outStaticPath+releaseDir,outTplPath+releaseDir], cb);
    });
    //这里是监控文件变动打包
    gulp.task('watch',function(){
    gulp.watch(staticPath+'/web/css/**/*.css',['web_css']);
    gulp.watch(staticPath+'/web/js/**/*.js',['web_js']);
    gulp.watch(staticPath+'/web/images/**/*.{png,jpg,gif}',['copy_webImages']);
    });
    //发行版 gulp
    gulp.task('default', ['clearRelease'], function(){
    for(var key in taskList){
    taskList[key]('open');
    }
    });

    最后大家就可以执行一下npm run build 就可以了。

  • 相关阅读:
    discuz $_G变量
    php & 引用
    discuz模板引擎
    nginx正则表达式
    linux系统安装 dig和nslookup命令
    linux中的各种$号 位置参数变量
    memcache图形管理工具
    mysql 注入问题
    pycharm 连接mysql失败
    Bootstrap 常用网站
  • 原文地址:https://www.cnblogs.com/zjw2004112/p/518shengmao.html
Copyright © 2011-2022 走看看