Օգտագործողի թեմաների ավտոմատացման գործիքների ստեղծում (Gulpjs)
Ավտոմատացման գործիքների օգտագործումը հեշտացնում է թեմաների ստեղծման գործընթացը։ Այստեղ մենք պատրաստվում ենք օգտագործել gulp js՝ օգտվողի թեմայի ավտոմատացման գործիք ստեղծելու համար։
Gulp 3.x և Node 10.x և ավելի ցածր տարբերակների հետ աշխատանք
1. Node.js-ի տեղադրում
Ներբեռնեք և տեղադրեք NodeJS-ի վերջին տարբերակը nodejs.org կայքից։ Տեղադրման գործընթացը կարող է տարբերվել կախված ձեր օպերացիոն համակարգից։
2. Տեղադրեք Gulp
npm install gulp-cli -g
3. Gulpfile.js-ի կարգավորում
Գնացեք օգտվողի թեմաների պանակը։
Ստեղծեք gulpfile.js ձեռքով՝ օգտագործելով cmd/terminal կամ աջ կտտացրեք և ստեղծեք նոր ֆայլ կամ այլ ֆայլ։
touch gulpfile.js
Պատճենեք և տեղադրեք ամբողջ կոդը
Նշում․ ես իմ ոչ մշակումված ֆայլերը տեղադրել եմ 'src' պանակում, իսկ աշխատելու պատրաստ ֆայլերը՝ օգտվողի թեմայի արմատային պանակում։ Ուստի, երբ sass ֆայլերը կոմպիլացվում են «my_custom_theme_folder/src/scss» պանակից, դրանք կոմպիլացվում և տեղադրվում են «my_custom_theme_folder/css» պանակում։
var gulp = require('gulp'), livereload = require('gulp-livereload'), gulpIf = require('gulp-if'), eslint = require('gulp-eslint'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'), sourcemaps = require('gulp-sourcemaps'), imagemin = require('gulp-imagemin'), pngquant = require('imagemin-pngquant'); gulp.task('imagemin', function () { return gulp.src('./src/images/*') .pipe(imagemin({ progressive: true, svgoPlugins: [{removeViewBox: false}], use: [pngquant()] })) .pipe(gulp.dest('./images')); }); gulp.task('sass', function () { gulp.src('./src/sass/**/*.scss') .pipe(sourcemaps.init()) .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) .pipe(autoprefixer('last 2 version')) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./css')); }); function isFixed(file) { // Has ESLint fixed the file contents? return file.eslint != null && file.eslint.fixed; } gulp.task('eslint', function(){ gulp.src(['./src/js/*.js']) .pipe(eslint({ "extends": "eslint:recommended", "env": { "browser": true }, "globals": { "Drupal": true, "drupalSettings": true, "drupalTranslations": true, "domready": true, "jQuery": true, "_": true, "matchMedia": true, "Backbone": true, "Modernizr": true, "CKEDITOR": true }, "rules": { // Errors. "array-bracket-spacing": [2, "never"], "block-scoped-var": 2, "brace-style": [2, "stroustrup", {"allowSingleLine": true}], "comma-dangle": [2, "never"], "comma-spacing": 2, "comma-style": [2, "last"], "computed-property-spacing": [2, "never"], "curly": [2, "all"], "eol-last": 2, "eqeqeq": [2, "smart"], "guard-for-in": 2, "indent": [2, 2, {"SwitchCase": 1}], "key-spacing": [2, {"beforeColon": false, "afterColon": true}], "linebreak-style": [2, "unix"], "lines-around-comment": [2, {"beforeBlockComment": true, "afterBlockComment": false}], "new-parens": 2, "no-array-constructor": 2, "no-caller": 2, "no-catch-shadow": 2, "no-empty-label": 2, "no-eval": 2, "no-extend-native": 2, "no-extra-bind": 2, "no-extra-parens": [2, "functions"], "no-implied-eval": 2, "no-iterator": 2, "no-label-var": 2, "no-labels": 2, "no-lone-blocks": 2, "no-loop-func": 2, "no-multi-spaces": 2, "no-multi-str": 2, "no-native-reassign": 2, "no-nested-ternary": 2, "no-new-func": 2, "no-new-object": 2, "no-new-wrappers": 2, "no-octal-escape": 2, "no-process-exit": 2, "no-proto": 2, "no-return-assign": 2, "no-script-url": 2, "no-sequences": 2, "no-shadow-restricted-names": 2, "no-spaced-func": 2, "no-trailing-spaces": 2, "no-undef-init": 2, "no-undefined": 2, "no-unused-expressions": 2, "no-unused-vars": [2, {"vars": "all", "args": "none"}], "no-with": 2, "object-curly-spacing": [2, "never"], "one-var": [2, "never"], "quote-props": [2, "consistent-as-needed"], "semi": [2, "always"], "semi-spacing": [2, {"before": false, "after": true}], "space-after-keywords": [2, "always"], "space-before-blocks": [2, "always"], "space-before-function-paren": [2, {"anonymous": "always", "named": "never"}], "space-in-parens": [2, "never"], "space-infix-ops": 2, "space-return-throw-case": 2, "space-unary-ops": [2, { "words": true, "nonwords": false }], "spaced-comment": [2, "always"], "strict": 2, "yoda": [2, "never"], // Warnings. "max-nested-callbacks": [1, 3], "valid-jsdoc": [1, { "prefer": { "returns": "return", "property": "prop" }, "requireReturn": false }] }, fix: true, })) .pipe(eslint.format()) // if fixed, write the file to dest .pipe(gulpIf(isFixed, gulp.dest('./js/')));; }); gulp.task('watch', function(){ livereload.listen(); gulp.watch('./src/sass/**/*.scss', ['sass']); gulp.watch('./src/js/**/*.js', ['eslint']); gulp.watch(['./css/style.css', './**/*.html.twig', './js/*.js'], function (files){ livereload.changed(files) }); });
4. Փաթեթների մենեջերի կարգավորում
Մուտքագրեք npm init ձեր տերմինալում օգտվողի թեմաների պանակից և լրացրեք պահանջվող տվյալները package.json ֆայլի ստեղծման ընթացքում։
5. Տեղադրեք կախվածությունները
Մուտքագրեք npm install --save-dev <packagename> ձեր տերմինալում օգտվողի թեմաների պանակից։ Սա կդամուցի gulp ֆայլերն ու կապված կախվածությունները և կստեղծի 'node_modules' պանակը։
6. Ավտոմատացման գործիքի գործարկում cmd/terminal-ից
Հիմա դուք պատրաստ եք գործարկել gulp ավտոմատացման գործիքը։
Մուտքագրեք gulp watch։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.