使用节点sass和POSTSS autoprefixer使用npm脚本生成源映射

使用节点sass和POSTSS autoprefixer使用npm脚本生成源映射,npm,node-sass,postcss,autoprefixer,npm-scripts,Npm,Node Sass,Postcss,Autoprefixer,Npm Scripts,在将输出从一个节点传输到另一个节点时,是否可以使用节点sass和POSTSS autoprefixer生成完全工作的源映射?我目前在package.json中有以下内容: "scripts": { "sass": "node-sass sass/app.scss --source-map true --source-map-embed true", "postcss:autoprefixer": "postcss --use autoprefixer -b 'last 2 ver

在将输出从一个节点传输到另一个节点时,是否可以使用节点sass和POSTSS autoprefixer生成完全工作的源映射?我目前在package.json中有以下内容:

"scripts": {
    "sass": "node-sass sass/app.scss --source-map true --source-map-embed true",
    "postcss:autoprefixer": "postcss --use autoprefixer -b 'last 2 versions' --map",
    "css": "npm run sass -s | npm run postcss:autoprefixer -s > css/app.css"
}
这会生成一个半工作的内联源代码映射,但指向原始文件的链接不正确,因此在Chrome devtools中单击这些文件不会加载它们(看起来它们是作为相对链接处理的,然后从css文件夹中引用)。我试图通过将
--source map contents true
选项添加到节点sass来解决这个问题,但随后autoprefixer出现了错误,我怀疑是因为它不喜欢dataUri的行长度


理想情况下,我还是希望输出一个单独的.map文件,但是将node sass选项设置为
--source map css/app.css.map
不会写出任何内容,大概是因为只有css输出到stdout。

源映射
替换为
源映射根目录
和文件系统URL似乎可以做到这一点:

"scripts": {
    "sass": "node-sass sass/app.scss --source-map-root file://${PWD}/ --source-map-embed true",
    "postcss:autoprefixer": "postcss --use autoprefixer -b 'last 2 versions' --map",
    "css": "npm run sass -s | npm run postcss:autoprefixer -s > css/app.css"
}
不过,如果能够输出单独的.map文件,那就太好了

更新:

以下是RyanZim评论建议的使用驱魔师的新package.json:

"scripts": {
    "sass": "node-sass sass/app.scss --source-map-root file://${PWD}/ --source-map-embed true",
    "postcss:autoprefixer": "postcss --use autoprefixer -b 'last 2 versions' --map",
    "css": "npm run sass -s | npm run postcss:autoprefixer -s | exorcist css/app.css.map > css/app.css"
}

对于单独的地图文件,您可以使用。您也可以让PostCs为您编写文件,并按如下方式传递地图文件名:
PostCs[…]--map
@RyanZim我想避免在postcss任务本身中输出,以便在必要时继续在其他地方传递命令,但驱魔师工作得非常好,谢谢!