【发布时间】:2016-08-02 06:34:03
【问题描述】:
我一直在努力解决这个问题,并且想知道是否可以开始。感谢您对此的任何帮助!
npm 包
我有一个 npm 包,它基本上是一个 React 组件库。这个库嵌入了样式表,它引用了 CSS 中的字体和图像等资产。然后这些都使用 webpack 捆绑到 my-package.js。
这个配置看起来像:
var path = require('path');
module.exports = {
module: {
loaders: [
{
test: /\.js$/,
loaders: ['babel-loader'],
exclude: /node_modules/
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
},
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
loader: 'file-loader'
},
{
test: /\.styl$/,
loader: 'style-loader!css-loader!stylus-loader'
}
]
},
entry: [
'./lib/components/index.js',
'./lib/index.styl'
],
output: {
path: path.join(__dirname, 'build/'),
filename: 'my-package.js'
}
}
./lib/components/index.js 看起来像:
import '../index.styl';
import MyComponent from './my-component.js';
export {
MyComponent
}
到目前为止,一切都很好。
应用程序
现在在另一个代码库中,我有了安装这个 npm 包的主应用程序。
我的应用程序根需要这个包...
import MyPackage from 'my-package';
然后将 webpack 本身捆绑并加载到浏览器上。所有脚本和样式块都正确捆绑,但是引用资产的样式使用 npm 包本身的相对 url,因此从应用程序给我 404。
有没有办法告诉 webpack 从node_modules/my-package/build/[webpack-generated-name].jpg 解析这些图像?
我的应用程序的 webpack 配置如下所示:
var path = require('path'),
webpack = require('webpack');
module.exports = {
devtool: '#eval-source-map',
entry: [
'my-package',
'webpack/hot/only-dev-server',
'./app/index.js',
],
output: {
path: path.join(__dirname, 'build/static'),
filename: 'bundled.js',
publicPath: '/',
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
resolve: {
extensions: ['', '.js']
},
resolveLoader: {
'fallback': path.join(__dirname, 'node_modules')
},
module: {
loaders: [
{
test: /\.js$/,
loaders: ['react-hot', 'babel'],
exclude: /node_modules/,
include: __dirname
},
{
test: /\.css?$/,
loader: "style-loader!css-loader",
include: __dirname
},
{
test: /\.(jpg|jpeg|ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
loader: 'file-loader'
},
{
test: /\.styl$/,
loader: 'style-loader!css-loader!stylus-loader'
}
]
}
};
【问题讨论】:
-
如果图片没有被导入或者不需要,webpack 不会处理它们。你可能想要copy-webpack-plugin
-
感谢@Interrobang。我对采用这种方法有点不确定,因为 npm 包中的 webpack 构建步骤似乎需要了解我的应用程序的公共路径。我的应用程序的 webpack 配置中是否有任何选项可以在我复制资产后再次解析路径?
-
知道了,将发布修复程序。谢谢@Interrobang!
标签: javascript reactjs npm webpack assets