![](/img/trans.png)
[英]Webpack output file to have exports default instead of module.exports
[英]Use export default in .eslintrc.js file instead of module.exports
我想在我的.eslintrc.js
文件中使用export default obj
而不是module.exports = obj
,因為代碼庫中的其他地方我們都在使用export
。
到目前為止沒有運氣,很難搜索這個問題。
我得到的錯誤:
> eslint src
Cannot read config file: src/.eslintrc.js
Error: Unexpected token export
src/.eslintrc.js:23
export default foo;
^^^^^^
SyntaxError: Unexpected token export
要在 ESLint 配置文件中使用 ES2015 語法進行默認導出,可以將 Babel 用於轉譯和 Pirates 用於鈎子的組合來劫持導入 ES2015 編寫的 ESLint 配置文件的require
語句。 請允許我解釋一下。
通常,ESLint 會在項目根目錄中尋找一個.eslintrc.js
文件,它通常由 Node.js 解析而不使用 Babel。 我們將重新利用這個文件,讓它做兩件事:注冊一個鈎子和導入 ES2015 ESLint 配置文件。
假設你已經有一個.eslintrc.js
使用ES2015默認的導出語法,切內容指出,文件並將其粘貼到一個新的文件名為.es2015lintrc.js
或相似。 名稱無關緊要; 它可以被稱為任何你想要的。
// .es2015lintrc.js
export default {
// ESLint config properties...
}
請確保您有@babel/preset-env
, @babel/core
, eslint
和pirates
繼續之前安裝的軟件包。 接下來,創建一個定義鈎子及其行為的文件。 為簡單起見,我們將其稱為hook.js
// hook.js
const {addHook} = require('pirates');
const {transform} = require('@babel/core');
module.exports = options =>
addHook(
function(source, filename) {
return transform(source, {
presets: [
[
'@babel/preset-env',
{
modules: 'cjs',
targets: {
node: process.versions.node
}
}
]
]
}).code;
},
{
exts: ['.js'],
ignoreNodeModules: true,
...options
}
);
然后使用require
語句將此模塊導入原始.eslintrc.js
並注冊鈎子,該鈎子可以劫持和轉換所有使用未來的require
語句導入的文件。 最后,可以使用我們劫持的require
語句導入以 ES2015 語法編寫的 ESLint 配置文件。
// .eslintrc.js
const registerHook = require('./hook');
registerHook();
module.exports = require('./.es2015lintrc').default;
現在你應該可以走了! 在用 ES2015 語法編寫 Babel 配置時也可以使用相同的方法。 享受!
如果您已經安裝了@babel/register
,那么只需將您的.eslintrc.js
重命名為.eslintrc.babel.js
(或您喜歡的任何名稱)並將其添加到.eslintrc.js
:
require('@babel/register')
module.exports = require('./.eslintrc.babel.js').default
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.