Exemple #1
0
        public static void RenderCss(string lessFilePath, TextWriter output, bool compress = true, string lessPrologue = null, string lessPostscript = null, string lineNumbers = null)
        {
            TextReader lessStream;

            string lessSrc = File.ReadAllText(lessFilePath);

            lessStream = new StringReader(
                lessPrologue
                + lessSrc
                + lessPostscript
                );

            using (lessStream)
                using (var errors = new StringWriter())
                {
                    /*
                     *  usage: lessc [option option=parameter ...] <source> [destination]
                     *
                     *  If source is set to `-' (dash or hyphen-minus), input is read from stdin.
                     *
                     *      options:
                     *      -h, --help              Print help (this message) and exit.
                     *      --include-path=PATHS    Set include paths. Separated by `:'. Use `;' on Windows.
                     *      -M, --depends           Output a makefile import dependency list to stdout
                     *      --no-color              Disable colorized output.
                     *      --no-ie-compat          Disable IE compatibility checks.
                     *      -l, --lint              Syntax check only (lint).
                     *      -s, --silent            Suppress output of error messages.
                     *      --strict-imports        Force evaluation of imports.
                     *      --verbose               Be verbose.
                     *      -v, --version           Print version number and exit.
                     *      -x, --compress          Compress output by removing some whitespaces.
                     *      --yui-compress          Compress output using ycssmin
                     *      --max-line-len=LINELEN  Max line length used by ycssmin
                     *      -O0, -O1, -O2           Set the parser's optimization level. The lower
                     *                              the number, the less nodes it will create in the
                     *                              tree. This could matter for debugging, or if you
                     *                              want to access the individual nodes in the tree.
                     *      --line-numbers=TYPE     Outputs filename and line numbers.
                     *                              TYPE can be either 'comments', which will output
                     *                              the debug info within comments, 'mediaquery'
                     *                              that will output the information within a fake
                     *                              media query which is compatible with the SASS
                     *                              format, and 'all' which will do both.
                     *      -rp, --rootpath=URL     Set rootpath for url rewriting in relative imports and urls.
                     *                              Works with or without the relative-urls option.
                     *      -ru, --relative-urls    re-write relative urls to the base less file.
                     *      -sm=on|off              Turn on or off strict math, where in strict mode, math
                     *      --strict-math=on|off    requires brackets. This option may default to on and then
                     *                              be removed in the future.
                     *      -su=on|off              Allow mixed units, e.g. 1px+1em or 1px*1px which have units
                     *  --strict-units=on|off   that cannot be represented.
                     */

                    string args = "\"" + _lessc + "\""
                                  + " -" // read from stdin
                                  + (compress ? " --yui-compress" : "")
                                  + " --no-color"
                                  + (lineNumbers != null ? " --line-numbers=" + lineNumbers : "");
                    int exitCode = ProcessUtil.Exec(NodeExe,
                                                    args: args,
                                                    stdIn: lessStream,
                                                    stdOut: output,
                                                    stdErr: errors,
                                                    workingDirectory: Path.GetDirectoryName(lessFilePath));
                    if (exitCode != 0)
                    {
                        throw new ApplicationException(string.Format("Error {0} in '{1}': \r\n{2}",
                                                                     exitCode,
                                                                     lessFilePath,
                                                                     errors.ToString().Trim()));
                    }
                }
        }
Exemple #2
0
        public static void RenderCss(string lessFilePath, TextWriter output, bool compress = true, string lessPrologue = null, string lessPostscript = null, string lineNumbers = null)
        {
            TextReader lessStream;

            string lessSrc = File.ReadAllText(lessFilePath);

            lessStream = new StringReader(
                lessPrologue
                + lessSrc
                + lessPostscript
                );

            using (lessStream)
                using (var errors = new StringWriter())
                {
                    string dirname = Path.GetDirectoryName(lessFilePath);
                    if (dirname.Contains(' '))
                    {
                        throw new ApplicationException("lessc doesn't support file paths with spaces '" + dirname + "'");
                    }

                    /*
                     *  usage: lessc [option option=parameter ...] <source> [destination]
                     *
                     *  If source is set to `-' (dash or hyphen-minus), input is read from stdin.
                     *
                     *  options:
                     *      -h, --help              Print help (this message) and exit.
                     *      --include-path          Set include paths. Separated by `:'. Use `;' on Windows.
                     *      --no-color              Disable colorized output.
                     *      -s, --silent            Suppress output of error messages.
                     *      --strict-imports        Force evaluation of imports.
                     *      --verbose               Be verbose.
                     *      -v, --version           Print version number and exit.
                     *      -x, --compress          Compress output by removing some whitespaces.
                     *      --yui-compress          Compress output using ycssmin
                     *      -O0, -O1, -O2           Set the parser's optimization level. The lower
                     *                              the number, the less nodes it will create in the
                     *                              tree. This could matter for debugging, or if you
                     *                              want to access the individual nodes in the tree.
                     *      --line-numbers=TYPE     Outputs filename and line numbers.
                     *                              TYPE can be either 'comments', which will output
                     *                              the debug info within comments, 'mediaquery'
                     *                              that will output the information within a fake
                     *                              media query which is compatible with the SASS
                     *                              format, and 'all' which will do both.
                     *      -rp, --rootpath         Set rootpath for url rewriting in relative imports and urls.
                     *                              Works with or withour the relative-urls option.
                     *      -ru, --relative-urls    re-write relative urls to the base less file.
                     */

                    string args = "\"" + _lessc + "\""
                                  + " -" // read from stdin
                                  + (compress ? " --yui-compress" : "")
                                  + " --include-path=" + dirname
                                  + " --no-color"
                                  + (lineNumbers != null ? " --line-numbers=" + lineNumbers : "");
                    int exitCode = ProcessUtil.Exec(NodeExe,
                                                    args: args,
                                                    stdIn: lessStream,
                                                    stdOut: output,
                                                    stdErr: errors);
                    if (exitCode != 0)
                    {
                        throw new ApplicationException(string.Format("Error {0} in '{1}': \r\n{2}",
                                                                     exitCode,
                                                                     lessFilePath,
                                                                     errors.ToString().Trim()));
                    }
                }
        }
Exemple #3
0
        public static void RenderCss(string lessFilePath, TextWriter output, bool compress = true, string lessPrologue = null, string lessPostscript = null, string lineNumbers = null)
        {
            using (var errors = new StringWriter())
            {
                #region lessc usage

                /*
                 *  usage: lessc [option option=parameter ...] <source> [destination]
                 *
                 *  If source is set to `-' (dash or hyphen-minus), input is read from stdin.
                 *
                 *  options:
                 *    -h, --help               Print help (this message) and exit.
                 *    --include-path=PATHS     Set include paths. Separated by `:'. Use `;' on Windows.
                 *    -M, --depends            Output a makefile import dependency list to stdout
                 *    --no-color               Disable colorized output.
                 *    --no-ie-compat           Disable IE compatibility checks.
                 *    --no-js                  Disable JavaScript in less files
                 *    -l, --lint               Syntax check only (lint).
                 *    -s, --silent             Suppress output of error messages.
                 *    --strict-imports         Force evaluation of imports.
                 *    --insecure               Allow imports from insecure https hosts.
                 *    -v, --version            Print version number and exit.
                 *    -x, --compress           Compress output by removing some whitespaces.
                 *    --clean-css              Compress output using clean-css
                 *    --source-map[=FILENAME]  Outputs a v3 sourcemap to the filename (or output filename.map)
                 *    --source-map-rootpath=X  adds this path onto the sourcemap filename and less file paths
                 *    --source-map-basepath=X  Sets sourcemap base path, defaults to current working directory.
                 *    --source-map-less-inline puts the less files into the map instead of referencing them
                 *    --source-map-map-inline  puts the map (and any less files) into the output css file
                 *    -rp, --rootpath=URL      Set rootpath for url rewriting in relative imports and urls.
                 *                             Works with or without the relative-urls option.
                 *    -ru, --relative-urls     re-write relative urls to the base less file.
                 *    -sm=on|off               Turn on or off strict math, where in strict mode, math
                 *    --strict-math=on|off     requires brackets. This option may default to on and then
                 *                             be removed in the future.
                 *    -su=on|off               Allow mixed units, e.g. 1px+1em or 1px*1px which have units
                 *    --strict-units=on|off    that cannot be represented.
                 *
                 *  -------------------------- Deprecated ----------------
                 *    -O0, -O1, -O2            Set the parser's optimization level. The lower
                 *                             the number, the less nodes it will create in the
                 *                             tree. This could matter for debugging, or if you
                 *                             want to access the individual nodes in the tree.
                 *    --line-numbers=TYPE      Outputs filename and line numbers.
                 *                             TYPE can be either 'comments', which will output
                 *                             the debug info within comments, 'mediaquery'
                 *                             that will output the information within a fake
                 *                             media query which is compatible with the SASS
                 *                             format, and 'all' which will do both.
                 *    --verbose                Be verbose.
                 *
                 */
                #endregion

                string args = "\"" + _lessc + "\"";

                TextReader stdin = null;
                if (!string.IsNullOrEmpty(lessPrologue) || !string.IsNullOrEmpty(lessPostscript))
                {
                    stdin = new StringReader(
                        lessPrologue
                        + File.ReadAllText(lessFilePath)
                        + lessPostscript
                        );
                    args = " -" + args; // read from stdin  -- NOTE: THIS DOESN'T SEEM TO WORK ON AZURE?!?
                }
                else
                {
                    args += " \"" + lessFilePath + "\"";
                }

                args += (compress ? " --clean-css" : "")
                        + " --no-color"
                        + (lineNumbers != null ? " --line-numbers=" + lineNumbers : "");

                int exitCode = ProcessUtil.Exec(NodeExe,
                                                args: args,
                                                stdIn: stdin,
                                                stdOut: output,
                                                stdErr: errors,
                                                workingDirectory: Path.GetDirectoryName(lessFilePath));
                if (exitCode != 0)
                {
                    throw new ApplicationException(string.Format("Error {0} in '{1}': \r\n{2}",
                                                                 exitCode,
                                                                 lessFilePath,
                                                                 errors.ToString().Trim()));
                }
            }
        }