0

我创建了一个私有 npm 模块,当我在本地运行应用程序时它工作得非常好。当我使用npm publish. 但是,它依赖于库 antd,如果我将其保留在依赖项中,它会说它找不到 antd@2.12.1。所以我把它移到 peerDependencies 然后它会安装。当我尝试从我成功安装的 npm 包中导入任何组件(我从最简单的测试用例开始)时,它会抛出这个错误:

Module parse failed: Unexpected token (5:2)
You may need an appropriate loader to handle this file type.
| 
| const Module = ({children}) => (
|   <span className=`module-title`>{children}</span>
| )
| 

无论是否是使用 antd 的模块,都会出现上述加载程序问题。我的应用程序正在使用 webpack。我的 webpack 的 module: loaders 部分可以在下面找到:

module: {
    loaders: [
      { test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        // include: /node_modules\/@nuralogix\/dfx-ui\/src/
      },
      { test: /\.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/, 
        // include: /node_modules\/@nuralogix\/dfx-ui\/src/
      },
      { test: /\.global\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      },
      { test: /^((?!\.global).)*\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      },
      { test: /\.global\.less$/,
        use: [ 'style-loader', 'css-loader', 'less-loader' ]
      },
      { test: /^((?!\.global).)*\.less$/,
        use: [ 'style-loader', 'css-loader', 'less-loader' ]
      },

include:过去的评论很有帮助,但目前会导致错误。

我将非常感谢任何关于为什么我不能使用这个模块的建议或想法(尽管它看起来很简单)。

供参考的 Babel 文件:

{
  "presets": [
    ["env", {
      "targets": { "node": 7 },
      "useBuiltIns": true
    }],
    "stage-0",
    "react"
  ],
  "env": {
    "production": {
      "presets": ["react-optimize"],
      "plugins": [
        "babel-plugin-dev-expression",
          ["import", {"libraryName": "antd", "style": true}]
      ]
    },
    "development": {
      "plugins": [
        "transform-class-properties",
        "transform-es2015-classes",
          ["import", {"libraryName": "antd", "style": true} ]
      ]
    }
  }
}

注意:我非常有信心我没有正确编译到 es5。我已经添加了这两个脚本并在我的 package.json 中为它们安装了相关文件

"compile": "rimraf lib/* && babel src -d lib",
"prepare": "npm run compile"

现在,我收到此错误:

sh: 1: babel: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! packageName compile: 'rimraf lib/* && babel src -d lib'
npm ERR! spawn ENOENT

我的 .babelrc 文件与上面相同,只是我添加了:

"transform-runtime",

对开发和产品。

有没有人有使用 rimraf 或其他任何东西创建将 es6 编译为 es5 的脚本的经验?

作为参考,我基于这篇文章的许多新增内容:

http://blog.xebia.com/publishing-es6-code-to-npm/

4

1 回答 1

0

答案很简单,事实上。

.npmignore在根文件夹中创建,将源添加到忽略列表,例如

/src
/node_modules
.git
于 2020-12-03T07:58:13.767 回答