【发布时间】:2017-01-04 18:48:56
【问题描述】:
我有一个像这样的文件结构的 Aurelia 应用程序。 我正在使用 aurelia skeleton-typescript-webpack 1.0.0
|-- assets
|-- images
|-- imageA.jpg
|-- imageB.jpg
|-- src
|-- app.ts
|-- main.ts
|--views
|-- viewA.ts
|-- viewA.html
现在在 viewA.html 中,如果我想链接图片,我会使用绝对路径:
<img src="/assets/images/imageA.jpg">
但在生产中,应用程序将位于:http://domain.com/app/, 所以绝对路径不是一种选择。
如果我在开发环境中使用相对路径,aurelia-loader-webpack 会抛出无法解析的错误。
<img src="assets/images/imageA.jpg">
Module not found: Error: Can't resolve './assets/images/imageA.jpg' in '/app/src/views'
@ ./src/views/viewA.html 1:191-213
@ ./src ^\.\/.*$
@ ./~/aurelia-loader-webpack/dist/commonjs/aurelia-loader-webpack.js
有没有办法在开发环境中设置路径,以便从正确的文件夹加载资产? 或者在我运行 build:prod 时更改 img src 以重温?
最终我想做的是在我的模板中使用它:
<img src="imageA.jpg">
这将在 run dev env 上转换为绝对 /assets/images/,在 build prod 上转换为相对 assets/images/。
我想这是我可以在 webpack.config.ts 中做的事情,但找不到方法。
编辑,这里是 webpack 加载器
{ loaders:
[ { test: /\.tsx?$/,
loader: 'awesome-typescript',
exclude: [Object] },
{ test: /\.html$/, loader: 'html', exclude: [Object] },
{ test: /\.scss$/i,
loaders: '/App/node_modules/extract-text-webpack-plugin/loader.js?{"id":1,"omit":0,"remove":true,"notExtractLoader":"style"}!css!sass' },
{ test: /\.css$/i,
loaders: '/App/node_modules/extract-text-webpack-plugin/loader.js?{"id":2,"omit":0,"remove":true,"notExtractLoader":"style"}!css' },
{ test: /\.(png|gif|jpg)$/, loader: 'url', query: [Object] },
{ test: /\.woff2(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url',
query: [Object] },
{ test: /\.woff(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url',
query: [Object] },
{ test: /\.(ttf|eot|svg|otf)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'file' }
] }
【问题讨论】:
-
你的 webpack 配置有机会吗?没有任何具体内容都很难说。 Aurelia 样板文件可能会提供更多线索。
-
@JuhoVepsäläinen 我已经添加了我的配置。
标签: javascript webpack aurelia