• 跟angular2学一键开启项目--关于上个react-redux项目的一键调试


    一键调试类似于webpack的hot-loader,但是这个hot-loader并不怎么好用,想省事的同学可以配置一下就完了。

    今天介绍browser-sync,用它来一键开启项目。它可以监听任意文件的变动来reload浏览器,而且还可以自动打开项目,写一个script的命令行,轻松做到一键。

    这个是从angular2借鉴来的,angular2用到的是lite(一个小型的服务器,其实它也是封装的browser-sync),concurrently(命令行同步执行命令的包),我们用到的是browser-syncconcurrently

    还记得上个redux的新闻项目吗,这次的代码是把原来新闻项目改造为一键开启。传送门。改到master分支了。

    首先介绍一下browser-sync。Browsersync能让浏览器实时、快速响应您的文件更改(html、js、css、sass、less等)并自动刷新页面。更重要的是 Browsersync可以同时在PC、平板、手机等设备下进项调试

    多端调试我们用不到,用它自动响应就好。

    npm install -g browser-sync

    安装完,再执行

    browser-sync start --server --files "**/*.css, **/*.html"

    就能自动hot-load。用它的命令行是不需要写配置文件的。后面--files匹配到的文件都可以热加载,你可以自己写需要改动的文件匹配。

    这里我们结合gulp使用。

    看一下怎么写gulpfile

    var gulp        = require('gulp');
    var browserSync = require('browser-sync').create();
    var reload = browserSync.reload; gulp.task('serve', function() { browserSync.init({ server: "./" }); gulp.watch("./*.html").on('change', reload); gulp.watch("dist/*.js").on('change', reload); }); gulp.task('default', ['serve']);

    browserSync起一个服务器,gulp watch file,再调用reload。是不是很简单。。

    gulp也可以处理sass,

    var gulp        = require('gulp');
    var browserSync = require('browser-sync').create();
    var sass        = require('gulp-sass');
    var reload      = browserSync.reload;
    
    // 静态服务器 + 监听 scss/html 文件
    gulp.task('serve', ['sass'], function() {
    
        browserSync.init({
            server: "./app"
        });
    
        gulp.watch("app/scss/*.scss", ['sass']);
        gulp.watch("app/*.html").on('change', reload);
    });
    
    // scss编译后的css将注入到浏览器里实现更新
    gulp.task('sass', function() {
        return gulp.src("app/scss/*.scss")
            .pipe(sass())
            .pipe(gulp.dest("app/css"))
            .pipe(reload({stream: true}));
    });
    
    gulp.task('default', ['serve']);

    现在输入

    gulp

    就可以打开browser-sync的服务器,但是不能hot-load,为啥,因为项目里我们监听的是webpack打包之后的文件,而且我们必须监听这个。

    webpack不编译,bundle.js就不变…

    那我们就再用webpack监听文件的变化,webpack -w,自动监听webpack匹配到文件的变化。

    但是gulp监听,webpack也监听,这怎么写命令?这就用到了concurrently,让它两个同时监听。

    具体用法就不说了,github搜一下,我就上命令了。angular2也是类似差不多的。它只是用的tsc来编译ts文件。

    webpack && concurrently "npm run webpack:w" "npm run gulp"

    其中webpack:w === webpack -w

    把它写进package.json吧:

    ...
    "start": "webpack && concurrently "npm run webpack:w" "npm run gulp"",
        "gulp":"gulp",
        "webpack:w": "webpack -w",
    ...

    注意:因为后面那个npm run gulp是字符串,你得把gulp在script里面写一遍才行。

    到此,现在执行

    npm start

    就可以hot-load啦。以后一键调试,一键开启项目,都是非常爽的。它还可以适用于任何项目,原理就是监听文件嘛。

    angular2官方例子里面的script命令是:

    tsc && concurrently "npm run tsc:w" "npm run lite" 

    和咱们写的是一样的-0-,哈哈,从angular2里面抄来的~

  • 相关阅读:
    8.16集训
    8.15集训
    Educational Codeforces Round 97 (Rated for Div. 2)
    Codeforces Round #679 (Div. 2, based on Technocup 2021 Elimination Round 1)
    尺取法
    Codeforces Round #677 (Div. 3)
    单调队列
    dfs序
    离散化
    [kuangbin带你飞]专题七 线段树
  • 原文地址:https://www.cnblogs.com/dh-dh/p/5509824.html
Copyright © 2020-2023  润新知