1+ import path from 'path'
2+
13import remarkStringify from 'remark-stringify'
24import unified , { Processor } from 'unified'
35import remarkMdx from 'remark-mdx'
@@ -7,7 +9,14 @@ import { RemarkConfig } from './types'
79
810import cosmiconfig , { Explorer , CosmiconfigResult } from 'cosmiconfig'
911
10- export const requirePkg = ( plugin : string , prefix : string ) => {
12+ export const requirePkg = (
13+ plugin : string ,
14+ prefix : string ,
15+ filePath ?: string ,
16+ ) => {
17+ if ( filePath && / ^ \. \. ? ( [ \\ / ] | $ ) / . test ( plugin ) ) {
18+ plugin = path . resolve ( path . dirname ( filePath ) , plugin )
19+ }
1120 prefix = prefix . endsWith ( '-' ) ? prefix : prefix + '-'
1221 const packages = [
1322 plugin ,
@@ -46,9 +55,10 @@ export const getRemarkProcessor = (searchFrom: string) => {
4655 }
4756
4857 /* istanbul ignore next */
49- const { plugins = [ ] , settings } : Partial < RemarkConfig > =
50- ( remarkConfig . searchSync ( searchFrom ) || ( { } as CosmiconfigResult ) ) . config ||
51- { }
58+ const { config, filepath } : Partial < CosmiconfigResult > =
59+ remarkConfig . searchSync ( searchFrom ) || { }
60+ /* istanbul ignore next */
61+ const { plugins = [ ] , settings } : Partial < RemarkConfig > = config || { }
5262
5363 // disable this rule automatically since we already have a parser option `extensions`
5464 plugins . push ( [ 'lint-file-extension' , false ] )
@@ -61,7 +71,9 @@ export const getRemarkProcessor = (searchFrom: string) => {
6171 : [ pluginWithSettings ]
6272 return remarkProcessor . use (
6373 /* istanbul ignore next */
64- typeof plugin === 'string' ? requirePkg ( plugin , 'remark' ) : plugin ,
74+ typeof plugin === 'string'
75+ ? requirePkg ( plugin , 'remark' , filepath )
76+ : plugin ,
6577 ...pluginSettings ,
6678 )
6779 } ,
0 commit comments