@agds/gulp-config-preset

1.0.4 • Public • Published

logo

@agds/gulp-config-preset

版本 :1.0.4

构建npm包的gulp配置

快速开始

安装

npm i -D @agds/gulp-config-preset

引入

// gulpfile.js
const gulpPreset = require('@agds/gulp-config-preset');
exports.default = gulpPreset();

添加build脚本

package.jsonscripts下添加build命令;

{
  "scripts": {
    "build": "gulp",
    "prepublishOnly": "npm run build"
  }
}

API文档

gulppreset(options) ⇒ Undertaker.TaskFunction

性质: 函数

参数 类型 描述
options object gulp出入口配置
options.input string gulp构建入口
options.output string gulp构建出口

gulppreset~clean() ⇒ Promise

清除构建目录

性质: gulppreset的内部方法

gulppreset~build() ⇒ merge.Merge2Stream

构建

性质: gulppreset的内部方法

gulppreset~cp() ⇒ NodeJS.ReadWriteStream

复制无法构建的文件

性质: gulppreset的内部方法

配置源码

const { series, src, dest, parallel } = require('gulp');
const rimraf = require('rimraf');
const babel = require('gulp-babel');
const ts = require('gulp-typescript');
const merge = require('merge2');
const { FastPath, FastFs } = require('@agds/node-utils');
const path = require('path');
/**
 * @param {object} options gulp出入口配置
 * @param {string} options.input gulp构建入口
 * @param {string} options.output gulp构建出口
 * @returns {Undertaker.TaskFunction}
 */
function gulppreset({ input = 'src', output = 'lib' } = {}) {
    let params = require('@agds/ts-config-js').compilerOptions;
    if (FastFs.getPathStatSync(FastPath.getCwdPath('tsconfig.json'))) {
        params = 'tsconfig.json';
    }
    const tsProject = ts.createProject(params);
    const _input = FastPath.getCwdPath(input);
    const _output = FastPath.getCwdPath(output);
    /**
     * 清除构建目录
     *
     * @returns {Promise}
     */
    function clean() {
        return new Promise((resolve) => rimraf(_output, resolve));
    };
    /**
     * 构建
     *
     * @returns {merge.Merge2Stream}
     */
    function build() {
        const tsResult = src(path.join(_input, '**/*.[tj]s'))
            .pipe(tsProject());

        return merge([
            tsResult.dts.pipe(dest(path.join(_output, 'types'))),
            tsResult.js.pipe(babel()).pipe(dest(_output)),
        ]);
    }

    /**
     * 复制无法构建的文件
     *
     * @returns {NodeJS.ReadWriteStream}
     */
    function cp() {
        return src(path.join(_input, '**/*.!([tj]s)')).pipe(dest(_output));
    }
    return series(clean, parallel(build, cp));
}

module.exports = gulppreset;

许可证

MIT License Copyright (c) 2021 锦阳

请维护者喝杯咖啡

加入钉钉群讨论或加入开发

Package Sidebar

Install

npm i @agds/gulp-config-preset

Weekly Downloads

1

Version

1.0.4

License

MIT

Unpacked Size

8.67 kB

Total Files

4

Last publish

Collaborators

  • chujunyang