1

继续我之前的问题- 但这次是下一步:让文件修订工作。

我正在学习 johnpapa 的 Gulp 自动化课程,似乎遇到了另一面墙(当您尝试将简明课程改编为不同的文件结构时,您会得到这样的结果:P)。

基本上,问题是我确实得到了用修订命名的文件,但是这些名称没有进入最终结果test.jsp,我不知道为什么......

这是任务(为简洁起见省略了缩小,但它适用于文件修订):

gulp.task('build-dev', ['inject'], function () {

    var assets = $.useref.assets({searchPath: ''});

    return gulp
        .src(config.indexFile)
        .pipe($.rename('test.jsp'))
        .pipe($.plumber())
        .pipe(assets)
        .pipe($.rev())
        .pipe(assets.restore())
        .pipe($.useref())
        .pipe($.revReplace({modifyUnreved: replaceDirectory, modifyReved: replaceDirectory}))
        .pipe(gulp.dest(config.indexLocation))
        .pipe($.rev.manifest())
        .pipe(gulp.dest(config.indexLocation))
        ;
});

inject是将 css 和 js 引用注入索引文件的任务(正常工作),$isrequire('gulp-load-plugins')({lazy: true})config.indexFileis index.jsp

replaceDirectory函数是(使用,因为 rev-manifest 生成完整路径名):

function replaceDirectory(path) {

    var strToReplace = '../..';
    var strToReplaceWith = process.cwd().replace(/\\/g, '/') + '/WebContent';

    if (path) {
        return path.replace(strToReplace, strToReplaceWith);
    } else {
        return path;
    }
}

我的文件结构(与课程中的不同)是:

- ModuleDir
    - dist
        - css
            - lib.css
            - app.css
        - fonts
        - images
        - js
            - lib.js
            - app.js
    - css
    - js
    - web-app
        - InnerDir
            - index.jsp
            - test.jsp
    - package.json, bower.json, etc. (all the required files)

基本上,index.jsp 针对 CSS 和 JS 库和应用程序资产进行处理,这些资产被缩小并连接成 lib.css、lib.js、app.css 和 app.js。之后,所有这些都被注入到名为 test.jsp 的 index.jsp 的副本中。

资产收集、连接、注入工作和磁盘上的文件修改工作出色。文件名的更新test.jsp- 不是那么多......

任何想法或指针将不胜感激。

4

2 回答 2

4

您必须添加replaceInExtensions: '.jsp'到您的选项中revReplace()

在我查看插件代码并弄清楚之前,我遇到了这个问题一天半。我正在使用 .php 文件。文档确实说您需要这样做,但很容易错过。

希望能帮助到你。

于 2015-09-29T20:33:45.077 回答
0

与此同时(除非我找到问题的根源或者你们中的任何人都可以提供帮助),我选择了不同的缓存清除方案:

gulp.task('build-dev', ['inject'], function () {

    var assets = $.useref.assets({searchPath: ''});
    var cb = Math.random();

    return gulp
        .src(config.indexFile)
        .pipe($.rename('test.jsp'))
        .pipe($.plumber())
        .pipe(assets)
        .pipe(assets.restore())
        .pipe($.useref())
        .pipe($.replace('dist/css/lib.css', 'dist/css/lib.css?cb=' + cb))
        .pipe($.replace('dist/css/app.css', 'dist/css/app.css?cb=' + cb))
        .pipe($.replace('dist/js/lib.js', 'dist/js/lib.css?cb=' + cb))
        .pipe($.replace('dist/js/app.js', 'dist/js/app.js?cb=' + cb))
        .pipe(gulp.dest(config.indexLocation))
        ;
});

这不是我想要的答案,但却是我需要的答案。:)

于 2015-09-20T11:02:57.693 回答