Css 单个 function/go 中多个文件的自动前缀?
Css Autoprefixer for multiple files in single function/go ?
我的 Angular2 项目有 100 多个 Css 文件,这些文件没有任何前缀,例如 :Mozila、:Chrome 等,我需要一些工具或任何 gulp任务或任何将我的所有 css 文件转换为具有前缀的文件的东西。
我试过了
但没有按照我的用例工作,
所以可能吗?如果是怎么办?
自从您要求答案以来:
在你的IDE中(我以Visual Studio代码为例):
- Ctrl+Maj+F 将启动全局搜索(或在左侧工具栏上,单击放大镜)
- 激活 "search by regex" 选项(由
.*
表示)
输入您的正则表达式。它是这样的
^\s*([a-z-]*)\s*:\s*([\d\w-()"\s\.:=!@]*);?\s*$
在第二个字段中,使用类似
的内容
moz-: ;\nsafari-: ;
它会将 "moz-" 添加到正则表达式找到的每个 属性。
当然我打得很快,所以你必须做一些调整,但思路就在这里。
聊天后编辑 这是解释:
- 以^开头,表示"the line starts here"
- 那么\s*表示"line starts with as much tabs or space you want"
- ([a-z-]*) 表示 "find properties that contain a to z letters, and - characters"
- \s* 同上,有些spaces
- the : for the : 在每个 css 属性
- 再次,\s*
- ([\d\w-()"\s.:=!@]*) 表示 "find the property value that contains letters, numbers, spaces, and every special charachter listed (.:=!@)"
- 然后我们用 ; 结束这一行(出现零次或一次)
- 然后 space 用 \s*
- 而$表示行尾(与开头的^相反)
回答它是如何可能的:当您在正则表达式中放入括号时,它 "captures" 它找到的内容并将其注册到以 $ 符号开头的变量中。这就是您在替换字符串中写入 $1、$2 的原因,因为它捕获了 属性 名称和 属性 值。 \n 允许一行 return,您所要做的就是像那样放置任意数量的前缀!
有一个名为 Autoprefixer 的 node.js 工具,它可以满足您的需要。 PostCSS autoprefixer 实际上只是它的包装器。可以直接使用。
如果您不使用 Gulp、Grunt 或其他一些任务运行器,您可以从命令行手动使用 Autoprefixer。
首先安装它:
npm install -g autoprefixer
然后在某个文件上使用它:
autoprefixer file.css
或在多个文件上:
autoprefixer -d processed *.css
我的 Angular2 项目有 100 多个 Css 文件,这些文件没有任何前缀,例如 :Mozila、:Chrome 等,我需要一些工具或任何 gulp任务或任何将我的所有 css 文件转换为具有前缀的文件的东西。
我试过了
但没有按照我的用例工作,
所以可能吗?如果是怎么办?
自从您要求答案以来:
在你的IDE中(我以Visual Studio代码为例):
- Ctrl+Maj+F 将启动全局搜索(或在左侧工具栏上,单击放大镜)
- 激活 "search by regex" 选项(由
.*
表示) 输入您的正则表达式。它是这样的
^\s*([a-z-]*)\s*:\s*([\d\w-()"\s\.:=!@]*);?\s*$
在第二个字段中,使用类似
的内容moz-: ;\nsafari-: ;
它会将 "moz-" 添加到正则表达式找到的每个 属性。
当然我打得很快,所以你必须做一些调整,但思路就在这里。
聊天后编辑 这是解释:
- 以^开头,表示"the line starts here"
- 那么\s*表示"line starts with as much tabs or space you want"
- ([a-z-]*) 表示 "find properties that contain a to z letters, and - characters"
- \s* 同上,有些spaces
- the : for the : 在每个 css 属性
- 再次,\s*
- ([\d\w-()"\s.:=!@]*) 表示 "find the property value that contains letters, numbers, spaces, and every special charachter listed (.:=!@)"
- 然后我们用 ; 结束这一行(出现零次或一次)
- 然后 space 用 \s*
- 而$表示行尾(与开头的^相反)
回答它是如何可能的:当您在正则表达式中放入括号时,它 "captures" 它找到的内容并将其注册到以 $ 符号开头的变量中。这就是您在替换字符串中写入 $1、$2 的原因,因为它捕获了 属性 名称和 属性 值。 \n 允许一行 return,您所要做的就是像那样放置任意数量的前缀!
有一个名为 Autoprefixer 的 node.js 工具,它可以满足您的需要。 PostCSS autoprefixer 实际上只是它的包装器。可以直接使用。
如果您不使用 Gulp、Grunt 或其他一些任务运行器,您可以从命令行手动使用 Autoprefixer。
首先安装它:
npm install -g autoprefixer
然后在某个文件上使用它:
autoprefixer file.css
或在多个文件上:
autoprefixer -d processed *.css