gpt4 book ai didi

gulp - 从子目录运行 gulp?

转载 作者:行者123 更新时间:2023-12-02 07:23:40 27 4
gpt4 key购买 nike

我目前有这样的文件结构

SASS
gulpfile.js
node_modules
sites
example-site
scss
css
example-site-two
scss
css
example-site-three
scss
css

我在主父 SASS 文件夹中安装了 gulp,其中包含一个任务“sass-all”,该任务可以遍历每个站点的 scss 文件夹并将其编译为 css。

我正在尝试编写一个名为“sass-single”的新任务,它可以从任何示例站点文件夹中运行。因此,假设我在文件夹“example-site-two”中,我希望能够 cmd 并执行“gulp sass-single”,并且仅让它在此站点中编译 SASS。对于我想设置的单一 watch 任务也是如此。

问题是每当我从站点文件夹运行此任务时,它都会将我的工作目录更改为父 SASS 文件夹。我不想为每个不同的站点设置 100 个不同的任务,我希望只有一个“sass-single”任务,它足够聪明,只编译运行脚本时所在文件夹中的文件。

当前 Gulp 任务尝试
    gulp.task('sass-single', function () {
process.chdir('./');

// Where are the SCSS files?
var input = './scss/*.scss';

// Where do you want to save the compiles CSS file?
var output = './css';

return gulp
.src(input)
.pipe(sourcemaps.init())
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(postcss(processors))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest(output));
});

然而,这会返回到主 SASS 文件夹,然后什么也不做。
我将如何修改它以使其能够从任何站点文件夹运行,并且只为该站点执行此操作?

最佳答案

如果要将当前工作目录 (CWD) 更改回您调用的目录 gulp那么这将不起作用:

process.chdir('./');

那是相对路径。相对路径是相对于 CWD 的。但是当你执行 process.chdir('./') 时Gulp 已经将 CWD 更改为您的 Gulpfile.js 所在的目录。所以您只是将 CWD 更改为... CWD。

您可以明确地将 CWD 传递给 gulp在命令行上:
SASS/sites/example-site> gulp --cwd .

但这会很快变得烦人。

幸运的是你 Gulp stores the original CWDprocess.env.INIT_CWD在改变它之前。因此,您可以在任务中使用以下内容将 CWD 更改回原始状态:
process.chdir(process.env.INIT_CWD);

关于gulp - 从子目录运行 gulp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com