2

我正在使用 Grunt (grunt-contrib-less) 将我的 Less 文件处理成 CSS。这是有效的,但源映射不是。

我的 Less 文件位于 .Grunt 中/assets/less,Grunt 将它们编译成/public/css.

/public/是我在互联网上公开查看的文件夹。我想有一种方法可以让 sourcemaps 工作,即使我的源 Less 文件不在可公开访问的文件夹中。但是我没有找到任何例子。

我的 grunt-contrib-less 配置是:

options: {
    compress: true,
    yuicompress: true,
    optimization: 2,
    sourceMap: true,
    sourceMapFilename: "public/css/main.css.map", //Write the source map to a separate file with the given filename.
    sourceMapBasepath: "../assets/less", //Sets the base path for the Less file paths in the source map.
    sourceMapRootpath: "/",//Adds this path onto the Less file paths in the source map.
},
files: [
    {
        expand: true, // Enable dynamic expansion.
        cwd: 'assets/less/', // Src matches are relative to this path.
        src: ['*.less'], // Actual pattern(s) to match.
        dest: 'public/css/', // Destination path prefix.
        ext: '.css', // Dest filepaths will have this extension.
        extDot: 'first'   // Extensions in filenames begin after the first dot
    },
]
4

1 回答 1

0

我想知道你说“不工作”是什么意思。 请注意,源映射不包含原始文件的副本。源映射包含有关您的原始文件的信息,该信息包含文件名 (uri) 和行号,如下所示:

Line: 1, column: 436 in generated code maps to: 
{"source":"src/jquery.js","line":1966,"column":26,"name":"jQuery"}

调试工具可以使用这些信息来显示你在原始源文件中的对应行,当工具无法读取这个文件时,这是不可能的。

所以我希望你的源映射是正确的,但对你的调试工具毫无价值。

您应该在配置中添加以下选项:

   options: {
        sourceMap:true,
        outputSourceFiles: true
    }

另请参阅:grunt-contrib-less 是否支持 --source-map-map-inline?

于 2014-10-04T23:30:20.880 回答