|
1 | | -const concat = require ("gulp-concat") |
2 | | -const fs = require ("fs") |
3 | 1 | const gulp = require ("gulp") |
| 2 | +const concat = require ("gulp-concat") |
4 | 3 | const gzip = require ("gulp-gzip") |
5 | | -const path = require ("path") |
6 | | -const config = require ( path.join ( __dirname, "package.json" ) ) |
7 | 4 | const magepack = require ("gulp-magepack") |
8 | 5 | const minify = require ("gulp-minify-css") |
9 | 6 | const minifyJs = require ("gulp-minify") |
| 7 | +const replace = require ("gulp-replace") |
10 | 8 | const sass = require ("gulp-sass") |
11 | | -const uglify = require ("gulp-uglify") |
| 9 | +const tar = require ("gulp-tar") |
| 10 | +const fs = require ("fs") |
| 11 | +const fse = require ("fs-extra") |
| 12 | +const path = require ("path") |
12 | 13 | const webpack = require ("webpack") |
13 | 14 | const webpackStream = require ("webpack-stream") |
14 | | -const gulpIgnore = require ("gulp-ignore") |
15 | | -const webpackConfig = require ( path.join ( __dirname, "webpack.config.js" ) ) |
16 | | -const tar = require ("gulp-tar") |
17 | 15 |
|
18 | | -const EXTENSION_NAMESPACE = "JetRails_Cloudflare" |
19 | | -const EXTENSION_VERSION = config.version |
| 16 | +const PACKAGE_NAMESPACE = require ("./package.json").namespace |
| 17 | +const PACKAGE_VERSION = require ("./package.json").version |
| 18 | +const PACKAGE_SHORTNAME = PACKAGE_NAMESPACE.split ("_") [1].toLowerCase () |
20 | 19 |
|
21 | | -const MODULE_SHORT_NAME = config.name.replace ( /^.*-/, "" ) |
22 | 20 | const SOURCE_DIR = "src" |
23 | 21 | const BUILD_DIR = "build" |
24 | 22 | const STAGING_DIR = "public_html" |
25 | | -const SOURCE_PATH = path.join ( __dirname, SOURCE_DIR ) |
26 | | -const BUILD_PATH = path.join ( __dirname, BUILD_DIR ) |
27 | | -const STAGING_PATH = path.join ( __dirname, STAGING_DIR ) |
28 | | -const MAGENTO_SKIN_CSS = path.join ( "skin", "adminhtml", "base", "default", "css" ) |
29 | | -const MAGENTO_SKIN_SCSS = path.join ( "skin", "adminhtml", "base", "default", "scss" ) |
30 | | -const MAGENTO_SKIN_JS = path.join ( "skin", "adminhtml", "base", "default", "js" ) |
31 | | - |
32 | | -gulp.task ( "default", [ "build-styles", "build-scripts" ] ); |
33 | | -gulp.task ( "deploy", [ "deploy-staging" ] ); |
| 23 | +const PACKAGE_DIR = "dist" |
34 | 24 |
|
35 | 25 | gulp.task ( "init", [], ( callback ) => { |
36 | | - if ( !fs.existsSync ( SOURCE_PATH ) ) fs.mkdirSync ( SOURCE_PATH ) |
37 | | - if ( !fs.existsSync ( BUILD_PATH ) ) fs.mkdirSync ( BUILD_PATH ) |
38 | | - if ( !fs.existsSync ( STAGING_PATH ) ) fs.mkdirSync ( STAGING_PATH ) |
| 26 | + let mkdirNotExists = ( name ) => { |
| 27 | + if ( !fs.existsSync ( name ) ) { |
| 28 | + fs.mkdirSync ( name ) |
| 29 | + } |
| 30 | + } |
| 31 | + mkdirNotExists ( BUILD_DIR ) |
| 32 | + mkdirNotExists ( PACKAGE_DIR ) |
| 33 | + mkdirNotExists ( STAGING_DIR ) |
39 | 34 | callback () |
40 | 35 | }) |
41 | 36 |
|
42 | | -gulp.task ( "build-styles", [ "init" ], ( callback ) => { |
43 | | - gulp.src ( path.join ( SOURCE_PATH, MAGENTO_SKIN_SCSS, MODULE_SHORT_NAME, "index.scss" ) ) |
44 | | - .pipe ( sass ({ includePaths: path.join ( SOURCE_PATH, MAGENTO_SKIN_SCSS ) }) ) |
| 37 | +gulp.task ( "clean", [], ( callback ) => { |
| 38 | + let unlinkExists = ( name ) => { |
| 39 | + if ( fs.existsSync ( name ) ) { |
| 40 | + fse.removeSync ( name ) |
| 41 | + } |
| 42 | + } |
| 43 | + unlinkExists ( BUILD_DIR ) |
| 44 | + unlinkExists ( PACKAGE_DIR ) |
| 45 | + callback () |
| 46 | +}) |
| 47 | + |
| 48 | +gulp.task ( "bump", [], ( callback ) => { |
| 49 | + return gulp.src (`${SOURCE_DIR}/**/*`) |
| 50 | + .pipe ( replace ( /(^.*\*\s+@version\s+)(.+$)/gm, "$1" + PACKAGE_VERSION ) ) |
| 51 | + .pipe ( gulp.dest ( SOURCE_DIR ) ) |
| 52 | + .on ( "done", callback ) |
| 53 | +}) |
| 54 | + |
| 55 | +gulp.task ( "build-styles", ["init"], ( callback ) => { |
| 56 | + return gulp.src (`${SOURCE_DIR}/skin/adminhtml/base/default/scss/${PACKAGE_SHORTNAME}/index.scss`) |
| 57 | + .pipe ( sass ({ includePaths: `${SOURCE_DIR}/skin/adminhtml/base/default/scss` }) ) |
45 | 58 | .pipe ( minify () ) |
46 | 59 | .pipe ( concat ("bundle.min.css") ) |
47 | | - .pipe ( gulp.dest ( path.join ( BUILD_PATH, MAGENTO_SKIN_CSS, MODULE_SHORT_NAME ) ) ) |
48 | | - .on ( "end", callback ) |
| 60 | + .pipe ( gulp.dest (`${BUILD_DIR}/skin/adminhtml/base/default/css/${PACKAGE_SHORTNAME}`) ) |
| 61 | + .on ( "done", callback ) |
49 | 62 | }) |
50 | 63 |
|
51 | | -gulp.task ( "build-scripts", [ "init" ], ( callback ) => { |
52 | | - gulp.src ( path.join ( SOURCE_PATH, MAGENTO_SKIN_JS, MODULE_SHORT_NAME, "index.js" ) ) |
53 | | - .pipe ( webpackStream ( webpackConfig ), webpack ) |
| 64 | +gulp.task ( "build-scripts", ["init"], ( callback ) => { |
| 65 | + return gulp.src (`${SOURCE_DIR}/skin/adminhtml/base/default/js/${PACKAGE_SHORTNAME}/index.js`) |
| 66 | + .pipe ( webpackStream ( require ("./webpack.config.js") ), webpack ) |
54 | 67 | .pipe ( minifyJs ({ ext: { min: ".min.js" } }) ) |
55 | | - .pipe ( gulp.dest ( path.join ( BUILD_PATH, MAGENTO_SKIN_JS, MODULE_SHORT_NAME ) ) ) |
| 68 | + .pipe ( gulp.dest (`${BUILD_DIR}/skin/adminhtml/base/default/js/${PACKAGE_SHORTNAME}`) ) |
| 69 | + .on ( "done", callback ) |
| 70 | +}) |
| 71 | + |
| 72 | +gulp.task ( "build", [ "build-styles", "build-scripts" ], ( callback ) => { |
| 73 | + let ignoreJs = [ |
| 74 | + `!${SOURCE_DIR}/skin/adminhtml/base/default/js`, |
| 75 | + `!${SOURCE_DIR}/skin/adminhtml/base/default/js/**/*` |
| 76 | + ] |
| 77 | + let ignoreCss = [ |
| 78 | + `!${SOURCE_DIR}/skin/adminhtml/base/default/scss`, |
| 79 | + `!${SOURCE_DIR}/skin/adminhtml/base/default/scss/**/*`, |
| 80 | + `${SOURCE_DIR}/skin/adminhtml/base/default/scss/${PACKAGE_SHORTNAME}/fonts/**/*` |
| 81 | + ] |
| 82 | + return gulp.src ( [`${SOURCE_DIR}/**`].concat ( ignoreJs ).concat ( ignoreCss ) ) |
| 83 | + .pipe ( gulp.dest ( BUILD_DIR ) ) |
56 | 84 | .on ( "end", () => { |
57 | | - fs.unlinkSync ( path.join ( BUILD_PATH, MAGENTO_SKIN_JS, MODULE_SHORT_NAME, "bundle.js" ) ) |
58 | | - callback () |
| 85 | + fse.copySync ( |
| 86 | + `${SOURCE_DIR}/skin/adminhtml/base/default/scss/${PACKAGE_SHORTNAME}/fonts`, |
| 87 | + `${BUILD_DIR}/skin/adminhtml/base/default/css/${PACKAGE_SHORTNAME}/fonts` |
| 88 | + ) |
59 | 89 | }) |
| 90 | + .on ( "done", callback ) |
60 | 91 | }) |
61 | 92 |
|
62 | | -gulp.task ( "deploy-source", [ "build-styles", "build-scripts" ], function ( callback ) { |
63 | | - var sourceFiles = path.join ( SOURCE_PATH, "**", "*" ) |
64 | | - var notStyle = "!" + path.join ( SOURCE_PATH, "**", "js", "**/" ) |
65 | | - var notScript = "!" + path.join ( SOURCE_PATH, "**", "scss", "**/" ) |
66 | | - var notScriptFolder = "!" + path.join ( SOURCE_PATH, "**", "scss" ) |
67 | | - gulp.src ([ path.join ( SOURCE_PATH, MAGENTO_SKIN_SCSS, MODULE_SHORT_NAME, "fonts", "**", "*" ) ]) |
68 | | - .pipe ( gulp.dest ( path.join ( BUILD_PATH, MAGENTO_SKIN_CSS, MODULE_SHORT_NAME, "fonts" ) ) ) |
69 | | - gulp.src ([ sourceFiles, notStyle, notScript, notScriptFolder ]) |
70 | | - .pipe ( gulp.dest ( path.join ( BUILD_PATH ) ) ) |
71 | | - .on ( "end", callback ) |
72 | | -}); |
73 | | - |
74 | | -gulp.task ( "deploy-staging", [ "deploy-source", ], function ( callback ) { |
75 | | - gulp.src ( path.join ( BUILD_PATH, "**", "*" ) ) |
76 | | - .pipe ( gulp.dest ( path.join ( STAGING_PATH ) ) ) |
77 | | - .on ( "end", callback ) |
78 | | -}); |
| 93 | +gulp.task ( "deploy", ["build"], ( callback ) => { |
| 94 | + return gulp.src (`${BUILD_DIR}/**/*`) |
| 95 | + .pipe ( gulp.dest ( STAGING_DIR ) ) |
| 96 | + .on ( "done", callback ) |
| 97 | +}) |
79 | 98 |
|
80 | | -gulp.task ( "watch", [ "deploy-staging" ], () => { |
81 | | - gulp.watch ( path.join ( SOURCE_PATH, "**", "*" ), [ "deploy-staging" ] ); |
82 | | - gulp.watch ( path.join ( SOURCE_PATH, "**", "*.scss" ), [ "deploy-staging" ] ); |
83 | | - gulp.watch ( path.join ( SOURCE_PATH, "**", "*.js" ), [ "deploy-staging" ] ); |
| 99 | +gulp.task ( "watch", ["deploy"], () => { |
| 100 | + return gulp.watch ( `${SOURCE_DIR}/**/*`, ["deploy"] ) |
84 | 101 | }) |
85 | 102 |
|
86 | | -gulp.task ( "package", () => { |
| 103 | +gulp.task ( "package", [ "clean", "bump", "build" ], ( callback ) => { |
87 | 104 | let options = { |
88 | | - "template": "package.xml", |
89 | | - "output": "package.xml", |
90 | | - "version": EXTENSION_VERSION |
| 105 | + "template": "conf/package.xml", |
| 106 | + "version": PACKAGE_VERSION |
91 | 107 | } |
92 | | - gulp.src ([ path.join ( BUILD_PATH, "**", "*" ) ]) |
| 108 | + gulp.src (`${BUILD_DIR}/**/*`) |
93 | 109 | .pipe ( magepack ( options ) ) |
94 | | - .pipe ( gulpIgnore.exclude ("package.xml") ) |
95 | | - .pipe ( tar (`${EXTENSION_NAMESPACE}-${EXTENSION_VERSION}`) ) |
| 110 | + .pipe ( tar (`${PACKAGE_NAMESPACE}-${PACKAGE_VERSION}`) ) |
96 | 111 | .pipe ( gzip ({ extension: "tgz" }) ) |
97 | | - .pipe ( gulp.dest ("dist") ) |
| 112 | + .pipe ( gulp.dest ( PACKAGE_DIR ) ) |
| 113 | + .on ( "done", callback ) |
98 | 114 | }) |
0 commit comments