1.0.4 • Published 2 years ago
@agds/gulp-config-preset v1.0.4
@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.json
的scripts
下添加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 锦阳