使用节点sass和POSTSS autoprefixer使用npm脚本生成源映射
在将输出从一个节点传输到另一个节点时,是否可以使用节点sass和POSTSS autoprefixer生成完全工作的源映射?我目前在package.json中有以下内容:使用节点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
"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任务本身中输出,以便在必要时继续在其他地方传递命令,但驱魔师工作得非常好,谢谢!