在过去的一天半里,我一直在与webpack斗争,一直在放松,我放弃了,请帮忙!
所以我想做的是创建一个NPM软件包,该软件包将在我们的许多网站中使用。我们有多个具有共享功能的站点,我们使用的是redux,我制作了一个npm软件包,其中提供了可以跨多个项目导入的操作,reduce和中间件。效果很好,没有后顾之忧。我现在正在尝试制作第二个软件包,其中包含使用redux存储中的主应用程序状态的组件。
第二个软件包使用选择器并分派第一个软件包提供的操作。
我认为我的webpack配置存在问题,某种程度上该组件似乎无法访问我的应用程序商店,就好像它存在于自己的小世界中一样。这是我的猜测,我可能还有很远的路程。
我们正在使用react,next,redux和scss模块。
这是我的webpack配置(在我使用peer-deps-externals-webpack-plugin时,外部注释被注释掉了):
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
var path = require("path");
var PeerDepsExternalsPlugin = require('peer-deps-externals-webpack-plugin');
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve("build"),
filename: "index.js",
// libraryTarget: "commonjs2",
library: 'mm-chat-components',
libraryTarget: 'umd',
},
plugins: [
new MiniCssExtractPlugin({
filename: 'styles.css',
chunkFilename: 'styles.css'
}),
new PeerDepsExternalsPlugin()
],
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
{
test: /\.module\.s(a|c)ss$/,
loader: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: true,
sourceMap: false
}
},
{
loader: 'sass-loader',
options: {
sourceMap: false
}
}
]
},
{
test: /\.s(a|c)ss$/,
exclude: /\.module.(s(a|c)ss)$/,
loader: [
'css-loader',
{
loader: 'sass-loader',
options: {
sourceMap: false
}
}
]
},
{
test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
},
],
},
]
},
externals: {
// react: "react",
// reactDOM: 'react-dom',
// mmTheme: 'mm-theme',
// mmChatRedux: 'mm-chat-redux',
// mmReduxBase: 'mm-redux-base',
// redux: 'redux',
// reactRedux: 'react-redux',
// finalForm: 'final-form',
// reactFinalForm: 'react-final-form',
// twilioChat: 'twilio-chat'
}
};
这是我的package.json:
{
"name": "mm-chat-components",
"version": "1.0.0",
"description": "",
"main": "./build/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build-webpack": "webpack --mode production"
},
"author": "",
"license": "ISC",
"peerDependencies": {
"mm-redux-base": "git+https://github.com/MMTSURVEY/mm-redux-base.git",
"mm-theme": "git+https://github.com/MMTSURVEY/mmj-theme.git",
"final-form": "^4.18.7",
"react-final-form": "^6.3.5",
"react": "^16.13.1",
"twilio-chat": "^3.3.7",
"react-redux": "^7.2.0",
"react-dom": "^16.12.0",
"mm-chat-redux": "git+https://github.com/MMTSURVEY/mm-chat-redux.git"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-react": "^7.9.4",
"babel-loader": "^8.1.0",
"babel-plugin-react-css-modules": "^5.2.6",
"babel-plugin-react-css-modules-sass": "^1.1.0",
"css-loader": "^3.5.3",
"install-peers": "^1.0.3",
"mini-css-extract-plugin": "^0.9.0",
"node-sass": "^4.14.1",
"peer-deps-externals-webpack-plugin": "^1.0.4",
"sass-loader": "^8.0.2",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0"
}
}
还有我的babelrc:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
使用webpack时,我通常会迷路,但看起来仍然像魔术,这远远超出了我的理解范围。 有很多信息,我希望一切都清楚!在此先感谢您的帮助!你们摇滚。
美女