如何忽略 subrepo 中的 package.json
How to ignore package.json from subrepo
我正在开发一个核心库,其中可以克隆不同的组件并附加 themselves.Each 组件目录有一个 package.json 文件。我的核心是使用 webpack,当我 运行 构建命令时它会抛出这样的错误
ERROR in ./src/clients/products/src/Products.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /Users/mughees/Desktop/midgard-react/src/clients/products/src/Products.js: Unexpected token (46:17)
如果我从 subrepo/module 中删除 package.json,它编译正常。
这是我现在的 webpack。
const path = require("path");
const webpack = require("webpack");
module.exports = {
entry: ["babel-polyfill", "./src/index.js"] ,
mode: "development",
devtool: 'inline-source-map',
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: "babel-loader",
options: { presets: ["@babel/env"] }
},
{
test: /\.(css|scss)$/,
use: [
"style-loader",
"css-loader",
"sass-loader"
]
},
{
test: /\.(jpe?g|png|gif|svg)$/i,
use: [
"file-loader",
{
loader: "image-webpack-loader",
options: {
bypassOnDebug: true,
disable: true,
},
},
],
}
]
},
resolve: {
extensions: ["*", ".js", ".jsx"],
modules: [path.resolve(__dirname, './src'), 'node_modules'],
alias: {
store: path.resolve(__dirname, './src/store'),
}
},
output: {
path: path.resolve(__dirname, "dist/"),
publicPath: "/dist/",
filename: "bundle.js"
},
devServer: {
contentBase: path.join(__dirname, "public/"),
port: 3000,
publicPath: "http://localhost:3000/dist/",
historyApiFallback: true,
hotOnly: true
},
plugins: [new webpack.HotModuleReplacementPlugin()]
};
问题与 babel 有关,与 webpack 无关。我有 before.
这是一个测试 sub-directory 和 package.json
文件,在 运行 webpack 之后会抛出如下错误:
ERROR in ./home/three-JSX-main-patterns.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /var/www/html/ir/jsfun/home/three-JSX-main-patterns.js: Unexpected token (5:27)
并在我的案例中抱怨 JSX
solution
你的用例是什么?
- 您想以编程方式创建配置吗?
你要编译node_modules?
babel.config.js is for you!
您有只适用于您的简单单包的静态配置吗?
.babelrc is for you!
在我的例子中,我 .babelrc
是这样的:
{
"presets": ["@babel/preset-env", "@babel/preset-react"],
}
我用 babel.config.js
替换了它,如下所示:
module.exports = function (api) {
api.cache(true);
const presets = ["@babel/preset-env", "@babel/preset-react"];
return {
presets
};
}
而且效果很好。
我正在开发一个核心库,其中可以克隆不同的组件并附加 themselves.Each 组件目录有一个 package.json 文件。我的核心是使用 webpack,当我 运行 构建命令时它会抛出这样的错误
ERROR in ./src/clients/products/src/Products.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /Users/mughees/Desktop/midgard-react/src/clients/products/src/Products.js: Unexpected token (46:17)
如果我从 subrepo/module 中删除 package.json,它编译正常。
这是我现在的 webpack。
const path = require("path");
const webpack = require("webpack");
module.exports = {
entry: ["babel-polyfill", "./src/index.js"] ,
mode: "development",
devtool: 'inline-source-map',
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: "babel-loader",
options: { presets: ["@babel/env"] }
},
{
test: /\.(css|scss)$/,
use: [
"style-loader",
"css-loader",
"sass-loader"
]
},
{
test: /\.(jpe?g|png|gif|svg)$/i,
use: [
"file-loader",
{
loader: "image-webpack-loader",
options: {
bypassOnDebug: true,
disable: true,
},
},
],
}
]
},
resolve: {
extensions: ["*", ".js", ".jsx"],
modules: [path.resolve(__dirname, './src'), 'node_modules'],
alias: {
store: path.resolve(__dirname, './src/store'),
}
},
output: {
path: path.resolve(__dirname, "dist/"),
publicPath: "/dist/",
filename: "bundle.js"
},
devServer: {
contentBase: path.join(__dirname, "public/"),
port: 3000,
publicPath: "http://localhost:3000/dist/",
historyApiFallback: true,
hotOnly: true
},
plugins: [new webpack.HotModuleReplacementPlugin()]
};
问题与 babel 有关,与 webpack 无关。我有 before.
这是一个测试 sub-directory 和 package.json
文件,在 运行 webpack 之后会抛出如下错误:
ERROR in ./home/three-JSX-main-patterns.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /var/www/html/ir/jsfun/home/three-JSX-main-patterns.js: Unexpected token (5:27)
并在我的案例中抱怨 JSX
solution
你的用例是什么?
- 您想以编程方式创建配置吗?
你要编译node_modules?
babel.config.js is for you!
您有只适用于您的简单单包的静态配置吗?
.babelrc is for you!
在我的例子中,我 .babelrc
是这样的:
{
"presets": ["@babel/preset-env", "@babel/preset-react"],
}
我用 babel.config.js
替换了它,如下所示:
module.exports = function (api) {
api.cache(true);
const presets = ["@babel/preset-env", "@babel/preset-react"];
return {
presets
};
}
而且效果很好。