Skip to content

Commit

Permalink
Merge pull request #357 from dorthl/mian
Browse files Browse the repository at this point in the history
gulp assets
  • Loading branch information
dorthl committed Aug 3, 2023
2 parents fe8ae28 + 3690d0a commit 14135c9
Show file tree
Hide file tree
Showing 24 changed files with 508 additions and 237 deletions.
185 changes: 185 additions & 0 deletions src/Blogifier.Admin/assets/gulpfile.mjs
@@ -0,0 +1,185 @@


import { deleteAsync } from 'del';

import gulp from 'gulp';
import plumber from 'gulp-plumber';
import size from 'gulp-size';
import uglify from 'gulp-uglify';
import sourcemaps from 'gulp-sourcemaps';

import buffer from 'vinyl-buffer';
import source from 'vinyl-source-stream';

import rollupStream from '@rollup/stream';
import { babel } from '@rollup/plugin-babel';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import terser from '@rollup/plugin-terser';

import dartSass from 'sass';
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
import postcss from 'gulp-postcss';
import autoprefixer from 'autoprefixer';
import cssnano from 'cssnano';

import sprite from 'gulp-svg-sprite';

const { src, dest, watch, series, parallel } = gulp;

// Clear shell screen
console.clear();

const clean = () => {
return deleteAsync(['./dist']);
};

// 设置一个全局变量,用于指定当前的模式,默认为Debug模式
let mode = 'Debug';
const debug = (done) => {
mode = 'Debug';
done();
};
const release = (done) => {
mode = 'Release';
done();
};

// blogifier js
const blogifierJs = () => {
let outputOptions = {
sourcemap: true,
format: 'iife'
}

if (mode !== 'Debug') {
outputOptions.sourcemap = false;
outputOptions.minifyInternalExports = true;
outputOptions.plugins = [terser()];
}

let stream = rollupStream({
input: 'js/blogifier.js',
output: outputOptions,
plugins: [
babel({
exclude: 'node_modules/**',
presets: ['@babel/preset-env'],
babelHelpers: 'bundled',
}),
nodeResolve({
browser: true,
preferBuiltins: false,
}),
commonjs({
include: ['node_modules/**'],
exclude: [],
sourceMap: mode === 'Debug',
}),
],
})

stream = stream.pipe(source('blogifier.js'));
if (mode !== 'Debug') {
// JS Minify
stream = stream.pipe(buffer())
stream = stream.pipe(plumber())
stream = stream.pipe(uglify())
}
return stream.pipe(dest('dist/admin/js'));
}

// editor js
const editorJs = () => {
let outputOptions = {
sourcemap: true,
format: 'es'
}

if (mode !== 'Debug') {
outputOptions.sourcemap = false;
outputOptions.minifyInternalExports = true;
outputOptions.plugins = [terser()];
}

let stream = rollupStream({
input: 'js/editor.js',
output: outputOptions,
plugins: [
babel({
exclude: 'node_modules/**',
presets: ['@babel/preset-env'],
babelHelpers: 'bundled',
}),
nodeResolve({
browser: true,
preferBuiltins: false,
}),
commonjs({
include: ['node_modules/**'],
exclude: [],
sourceMap: mode === 'Debug',
}),
],
})

stream = stream.pipe(source('editor.js'));
if (mode !== 'Debug') {
// JS Minify
stream = stream.pipe(buffer())
stream = stream.pipe(plumber())
stream = stream.pipe(uglify())
}
return stream.pipe(dest('dist/admin/js'));
}

// sass
const scss = () => {
let stream = src("./scss/**/*.scss")

if (mode === 'Debug') {
stream = stream.pipe(sourcemaps.init())
}

stream = stream.pipe(
sass.sync({
outputStyle: mode === 'Debug' ? 'expanded' : 'compressed',
errLogToConsole: false,
includePaths: ['node_modules', 'bower_components', 'scss', '.'],
}).on('error', sass.logError)
)

if (mode === 'Debug') {
stream = stream.pipe(sourcemaps.write())
} else {
stream = stream.pipe(plumber())
stream = stream.pipe(postcss([autoprefixer(), cssnano()]))
}
return stream.pipe(dest('dist/admin/css'));
}

const watcher = () => {
watch('./js/**/*.js', series(blogifierJs));
watch('./scss/**/*.scss', series(scss));
};

export default series(
clean,
parallel(
scss,
blogifierJs,
editorJs,
watcher
)
);

const build = series(
clean,
scss,
blogifierJs,
editorJs,
);

export { debug, release, build };

51 changes: 30 additions & 21 deletions src/Blogifier.Admin/assets/package.json
Expand Up @@ -4,33 +4,42 @@
"version": "1.0.0",
"private": true,
"scripts": {
"start": "npm run watch-rollup | npm run watch-sass ",
"rtl": "rtlcss dist/admin/css/styles.css css/styles.rtl.css",
"sass": "sass",
"rollup": "rollup",
"watch-sass": "sass --watch scss:dist/admin/css",
"watch-rollup": "rollup -w --config rollup.config.dev.mjs",
"sass:Debug": "sass scss:dist/admin/css",
"rollup:Debug": "rollup --config rollup.config.dev.mjs",
"build:Debug": "npm run sass:Debug && npm run rollup:Debug",
"sass:Release": "sass scss:dist/admin/css --style=compressed --no-source-map",
"rollup:Release": "rollup --config rollup.config.mjs",
"build:Release": "npm run sass:Release && npm run rollup:Release"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.0",
"@rollup/plugin-node-resolve": "^15.1.0",
"@rollup/plugin-terser": "^0.4.3",
"glob": "^10.2.6",
"rollup": "^3.23.1",
"rtlcss": "^3.3.0",
"sass": "~1.32.12"
"start": "gulp",
"build": "gulp build",
"build:Debug": "gulp build",
"build:Release": "gulp release build"
},
"dependencies": {
"bootstrap": "~5.1.0",
"autosize": "^6.0.1",
"chart.js": "~2.9.4",
"easymde": "^2.18.0",
"highlight.js": "~10.7.2"
},
"devDependencies": {
"@babel/preset-env": "^7.22.9",
"@rollup/plugin-babel": "^6.0.3",
"@rollup/plugin-commonjs": "^25.0.0",
"@rollup/plugin-node-resolve": "^15.1.0",
"@rollup/plugin-terser": "^0.4.3",
"@rollup/stream": "^3.0.0",
"autoprefixer": "^10.4.14",
"cssnano": "^6.0.1",
"del": "^7.0.0",
"gulp": "^4.0.2",
"gulp-notify": "^4.0.0",
"gulp-plumber": "^1.2.1",
"gulp-postcss": "^9.0.1",
"gulp-rename": "^2.0.0",
"gulp-sass": "^5.1.0",
"gulp-size": "^4.0.1",
"gulp-sourcemaps": "^3.0.0",
"gulp-svg-sprite": "^2.0.3",
"gulp-uglify": "^3.0.2",
"rollup": "^3.23.1",
"rtlcss": "^3.3.0",
"sass": "~1.32.12",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
}
}
30 changes: 0 additions & 30 deletions src/Blogifier.Admin/assets/rollup.config.dev.mjs

This file was deleted.

34 changes: 0 additions & 34 deletions src/Blogifier.Admin/assets/rollup.config.mjs

This file was deleted.

6 changes: 6 additions & 0 deletions src/Blogifier.Themes.Standard/ThemesStandardConstant.cs
@@ -0,0 +1,6 @@
namespace Blogifier.Themes.Standard;

public static class ThemesStandardConstant
{
public const string AssemblyName = "Blogifier.Themes.Standard";
}

0 comments on commit 14135c9

Please sign in to comment.