gulp-include icon indicating copy to clipboard operation
gulp-include copied to clipboard

Ability to control syntax

Open Grawl opened this issue 8 years ago • 2 comments

Hi! Awesome plugin, love it very much! So simple include/require instead of all this bullshit with Webpack or Browserify, just like in Sass 😅

I have an idea: like in gulp-inject#optionsstarttag, I want to control the syntax of how I use gulp-include.

For example:

.pipe(include({
    template: {
        js: (type, file)=> {
            return `//=${type} ${file}`
            // returns //=require "file.js"
            // or //=include 'file.js'
        }
    }
}))

This will be a default setting for JS files.

I want to use require()-like syntax to allow my editor to hint me relative paths by dropdown when it's uncommented, so I write require(''), hit Ctrl+Space and editor opens a popup with matched files:

2016-05-17 12 58 15

And then I comment it and add = symbol, so I have this:

//=require('../../node_modules/jquery/dist/jquery.js')

And I sure that I have the right path.

But now every time I add //require I have to remove ( and ) to make it work.

If there will be an option to modify this comment template, I will add parentheses to it:

.pipe(include({
    template: {
        js: (type, file)=> {
            return `//=${type} (${file})`
        }
    }
}))

Grawl avatar May 17 '16 03:05 Grawl

I'm interested in this as I want to use gulp-include with ABNF files, which use ; as a comment prefix, which doesn't appear to be supported. For example, I've tried ;= require grammar.abnf and it doesn't work. #= require grammar.abnf does appear to work. I could use gulp-replace to convert the comments, but it would certainly be an improvement if there was a way support arbitrary comment styles or prefixes.

DanStevens avatar Jun 24 '19 17:06 DanStevens

Instead of using a lambda, I would suggest specifying a prefix as a regular expression. This would be easier to implement as gulp-include already uses a regular expression to match include/require directives.

I would suggest a prefix option that accepts a string or a regular expression. This would be much like the similar gulp-file-include.

An example using a string:

.pipe(include({
    prefix: '//'
}))

And to support different prefix for different prefix per extension:

.pipe(include({
  prefix: {
    'js': '//',
    'html': '<!--',
    'css': '/*',
    'abnf': ';'
  }

DanStevens avatar Jun 24 '19 17:06 DanStevens