Webpack将首先尝试将引用的文件解析为JavaScript(因为's the default). Of course, that will fail. That'为什么需要为该文件类型指定加载器 . 例如file或url-loader获取引用的文件,将其放入webpack的输出文件夹(应该是在你的情况下 build )并返回该文件的散列URL .
var myImage = require("./static/myImage.jpg");
console.log(myImage); // '/build/12as7f9asfasgasg.jpg'
前面提到的 copy-webpack-plugin 带来的一个优点是,我想要使用无用的引用来混乱我的javascript包文件,我只想在正确的位置发出文件 . 我没有't found any other way to do this in webpack. Admittedly it'不是最初为webpack设计的,但它只是一个好处,如果你想要的话)
10 回答
假设您所有的静态资产都位于根级别的“静态”文件夹中,并且您希望将它们复制到维护子文件夹结构的构建文件夹,然后在您的条目文件中)
你不需要复制周围的东西,webpack的工作方式与gulp不同 . Webpack是一个模块捆绑器,您将在文件中引用所有内容 . 你只需要指定一个加载器 .
所以,如果你写:
Webpack将首先尝试将引用的文件解析为JavaScript(因为's the default). Of course, that will fail. That'为什么需要为该文件类型指定加载器 . 例如file或url-loader获取引用的文件,将其放入webpack的输出文件夹(应该是在你的情况下
build
)并返回该文件的散列URL .通常通过webpack配置应用加载器:
当然,您需要先安装文件加载器才能使其正常工作 .
前面提到的 copy-webpack-plugin 带来的一个优点是,我想要使用无用的引用来混乱我的javascript包文件,我只想在正确的位置发出文件 . 我没有't found any other way to do this in webpack. Admittedly it'不是最初为webpack设计的,但它只是一个好处,如果你想要的话)
很可能你应该使用在kevlened答案中提到的CopyWebpackPlugin . 对于某些类型的文件,例如.html或.json,您也可以使用raw-loader或json-loader . 通过
npm install -D raw-loader
安装它,然后你只需要在我们的webpack.config.js
文件中添加另一个加载器 .喜欢:
注意:重新启动webpack-dev-server以使任何配置更改生效 .
现在您可以使用相对路径来要求html文件,这样可以更轻松地移动文件夹 .
你可以在package.json中编写bash:
如果要复制静态文件,可以使用以下方式使用文件加载器:
对于html文件:
在webpack.config.js中:
在你的js文件中:
./static/与你的js文件的位置有关 .
你可以用图像或其他任何东西做同样的事情 . 上下文是一个有趣的探索方法!
以上建议很好 . 但是为了尝试直接回答你的问题,我建议在
package.json
中定义的脚本中使用cpy-cli
.此示例需要
node
到您路径上的某个位置 . 安装cpy-cli
作为开发依赖项:npm install --save-dev cpy-cli
然后创建几个nodejs文件 . 一个用于复制,另一个用于显示复选标记和消息 .
copy.js
checkmark.js
在
package.json
中添加脚本 . 假设脚本在<project-root>/scripts/
运行sript:
npm run copy
webpack配置文件(在webpack 2中)允许您导出promise链,只要最后一步返回webpack配置对象 . See promise configuration docs . 从那里:
您可以创建一个简单的递归复制功能来复制您的文件,并且只有在触发了webpack之后 . 例如 . :
我也被困在这里 . copy-webpack-plugin为我工作 .
但是,在我的情况下,我不需要'copy-webpack-plugin'(我后来才知道) .
webpack忽略根路径
例
因此,要在不使用'copy-webpack-plugin'的情况下完成这项工作,请在路径中使用'〜'
'〜'告诉webpack将'images'视为一个模块
注意:您可能必须添加images目录的父目录
访问https://vuejs-templates.github.io/webpack/static.html
使用文件加载器模块寻求资产是webpack的使用方式(source) . 但是,如果您需要更大的灵活性或想要更清晰的界面,您还可以使用我的
copy-webpack-plugin
(npm,Github)直接复制静态文件 . 对于static
至build
示例: