webstorm + express + gulp

目录结构

├── app.js
├── gulpfile.js
├── nodemon.json
├── package.json
├── public
│   ├── front
│   │   ├── css
│   │   ├── image
│   │   └── js
│   └── libs
│       ├── art-template
│       ├── bootstrap-3.3.7-dist
│       ├── font-awesome-4.7.0
│       ├── jquery-2.1.4
│       ├── jQuery-File-Upload-master
│       ├── kkpager-1.3
│       ├── layui-2.4.5
│       └── ueditor1_4_3_3
├── routes
│   ├── bbs
│   ├── blog
│   │   ├── index.js
│   │   └── u
│   └── index.js
├── staticsrc
│   ├── image
│   │   └── README.en.md
│   ├── js
│   │   └── core.js
│   └── sass
│       └── common.scss
└── views
    ├── blog
    │   ├── index.html
    │   └── u
    └── index.html

public/front 为自动生成的目录

package.json

{
  "name": "km-boot-express",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "art-template": "^4.13.2",
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-art-template": "^1.0.1",
    "morgan": "^1.9.1"
  },
  "devDependencies": {
    "del": "^4.1.1",
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^6.1.0",
    "gulp-sass": "^4.0.2",
    "gulp-sourcemaps": "^2.6.5"
  }
}

nodemon.json

{
  "restartable": "rs",
  "ignore": [
    ".git",
    ".svn",
    "node_modules/**/node_modules"
  ],
  "verbose": true,
  "execMap": {
    "js": "node --harmony"
  },
  "watch": [
    "views",
    "routes",
    "public/front"
  ],
  "env": {
    "NODE_ENV": "development",
    "PORT": "3000"
  },
  "ext": "js json html css"
}

nodemon 配置参考:https://www.cnblogs.com/chris-oil/p/6239097.html

app.js

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const app = express();

const indexRouter = require('./routes/index');

const blog_index_router = require('./routes/blog/index');

// 静态资源文件
app.use('/public/', express.static(path.join(__dirname, './public/')));

// 日志
app.use(morgan('short'));



// body-parser
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// art template 模板引擎
app.engine('html', require('express-art-template'));
app.set('view engine', 'express-art-template');
app.set('views', path.join(__dirname, './views/'));


app.use('/',indexRouter);
app.use('/blog',blog_index_router);

app.listen(3000,()=>{
    console.log('app is running 3000 ...');
});

gulpfile.js

const gulp = require('gulp');
const del = require('del');
const autoprefixer = require('gulp-autoprefixer');
const sass = require('gulp-sass');
const sourcemaps = require('gulp-sourcemaps');

gulp.task('clean', function () {
    return del(['public/front']);
});

gulp.task('sass', function () {
    return gulp.src('./staticsrc/sass/**/*')
        .pipe(sourcemaps.init())
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'Android >= 4.0'],
            cascade: true, //是否美化属性值 默认:true 像这样:
            //-webkit-transform: rotate(45deg);
            //        transform: rotate(45deg);
            remove: true //是否去掉不必要的前缀 默认:true
        }))
        .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError))
        .pipe(sourcemaps.write('./', {addComment: true}))
        .pipe(gulp.dest('./public/front/css'))
});


gulp.task('copyImg', function () {
    return gulp.src('./staticsrc/image/**/*')
        .pipe(gulp.dest('./public/front/image'));
});

gulp.task('copyjs', function () {
    return gulp.src('./staticsrc/js/**/*')
        .pipe(gulp.dest('./public/front/js'))
});

gulp.task('watch', function () {
    gulp.watch('./staticsrc/sass/**/*', ['sass']);
    gulp.watch('./staticsrc/js/**/*', ['copyjs']);

    // dl;kjfgs;lkjfls;kjflskflsl;skjflskjlksjflksjflksjflsjflskjfl;sjls;kjs;l

});

gulp.task('rebuild', gulp.series('clean', gulp.parallel('copyImg', 'copyjs', 'sass'),
    function watcher(done) {
        gulp.watch('./staticsrc/sass/**/*', gulp.parallel('sass'));
        gulp.watch('./staticsrc/js/**/*', gulp.parallel('copyjs'));
    })
);

gulp.task('default', gulp.series(gulp.parallel('copyImg', 'copyjs', 'sass'),
    function watcher(done) {
        gulp.watch('./staticsrc/sass/**/*', gulp.parallel('sass'));
        gulp.watch('./staticsrc/js/**/*', gulp.parallel('copyjs'));
    })
);

webstorm 配置 nodemon 自动重启

参考 https://blog.csdn.net/smiky/article/details/84598471

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值