Webpack将触及文件权限改为644?如何保留初始权限?
Webpack 3 修改文件权限问题解答
嘿,先给你明确答案:Webpack 默认生成文件时使用644权限是正常行为,这源于Node.js fs 模块的默认文件创建权限,但咱们完全可以通过配置调整成你需要的权限值。
为什么会出现这个情况?
Webpack 底层依赖 Node.js 的文件系统模块(fs)来创建输出文件,而 Node.js 创建文件时的默认权限就是 0o644(对应十进制的644)—— 这个权限意味着文件所有者可读可写,组用户和其他用户仅可读。
不过要注意:Webpack 本身不会修改你的源文件(比如 package.json、src/app.js)权限,如果这些文件权限也被改动了,大概率是其他工具/脚本(比如 npm 命令、额外的构建插件)导致的,建议排查下你的执行流程。
如何修改权限?
根据不同的文件类型(Webpack 主输出文件、loader 生成的资源、ExtractTextPlugin 输出的CSS),配置方式略有不同,下面针对你的配置给出修改方案:
1. 修改主输出文件(如 bundle.js)的权限
在 output 配置中添加 permissions 字段,值为你需要的八进制权限(注意前缀 0o):
output: { path: path.resolve(__dirname, './dist'), filename: 'bundle.js', permissions: 0o755 // 示例:设置为所有者可读可写可执行,其他用户可读可执行 }
2. 修改 file-loader 输出的图片资源权限
在 file-loader 的 options 里添加 permissions 配置:
{ test: /\.(jpg|png|gif|svg)$/, use: [{ loader: "file-loader", options: { name: './[name]_[hash:5].[ext]', useRelativePath : true, permissions: 0o755 // 给图片资源设置自定义权限 } }] }
3. 修改 ExtractTextPlugin 输出的 style.css 权限
调整 ExtractTextPlugin 的构造参数,添加 permissions 字段:
plugins: [ new ExtractTextPlugin({ filename: 'style.css', permissions: 0o755 // 设置CSS文件的权限 }) ]
权限值说明
常见的权限值参考:
0o644:默认值,所有者可读可写,其他用户只读0o755:所有者可读可写可执行,其他用户可读可执行0o664:所有者和组用户可读可写,其他用户只读
你可以根据自己的部署需求选择合适的权限值。
内容的提问来源于stack exchange,提问作者Kaptnkill
相关产品推荐
相关产品推荐

