Skip to content

Commit

Permalink
fix: set type module as default (#696)
Browse files Browse the repository at this point in the history
  • Loading branch information
dword-design committed May 14, 2023
1 parent edb44d8 commit ef9f6b0
Show file tree
Hide file tree
Showing 7 changed files with 302 additions and 142 deletions.
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -64,7 +64,6 @@
"ignore": "^5.1.4",
"is-ci": "^3.0.0",
"jiti": "^1.16.0",
"load-pkg": "^4.0.0",
"make-cli": "^3.0.0",
"mocha": "^10.2.0",
"mocha-spec-reporter-with-file-names": "npm:@dword-design/mocha-spec-reporter-with-file-names",
Expand Down
Expand Up @@ -6,13 +6,11 @@ Object {
"engines": Object {
"node": ">=14",
},
"exports": "./dist/index.js",
"files": Array [
"dist",
],
"funding": "https://github.com/sponsors/dword-design",
"license": "MIT",
"main": "dist/index.js",
"publishConfig": Object {
"access": "public",
},
Expand All @@ -26,6 +24,7 @@ Object {
"prepublishOnly": "base prepublishOnly",
"test": "base test",
},
"type": "module",
"version": "1.0.0",
}
`;
Expand All @@ -46,7 +45,6 @@ Object {
"engines": Object {
"node": ">=14",
},
"exports": "./dist/index.js",
"files": Array [
"dist",
],
Expand All @@ -56,7 +54,6 @@ Object {
"bar",
],
"license": "MIT",
"main": "dist/index.js",
"name": "foo",
"peerDependencies": Object {
"nuxt": "^1.0.0",
Expand Down Expand Up @@ -86,13 +83,11 @@ Object {
"engines": Object {
"node": ">=14",
},
"exports": "./dist/index.js",
"files": Array [
"dist",
],
"funding": "https://github.com/sponsors/dword-design",
"license": "MIT",
"main": "dist/index.js",
"publishConfig": Object {
"access": "public",
},
Expand All @@ -111,34 +106,3 @@ Object {
"version": "1.0.0",
}
`;

exports[`index sub-folder 1`] = `
Object {
"author": "Sebastian Landwehr <info@sebastianlandwehr.com>",
"engines": Object {
"node": ">=14",
},
"exports": "./dist/index.js",
"files": Array [
"dist",
],
"funding": "https://github.com/sponsors/dword-design",
"license": "MIT",
"main": "dist/index.js",
"publishConfig": Object {
"access": "public",
},
"scripts": Object {
"checkUnknownFiles": "base checkUnknownFiles",
"commit": "base commit",
"depcheck": "base depcheck",
"dev": "base dev",
"lint": "base lint",
"prepare": "base prepare",
"prepublishOnly": "base prepublishOnly",
"test": "base test",
},
"type": "module",
"version": "1.0.0",
}
`;
3 changes: 2 additions & 1 deletion src/get-generated-files/get-package-config/index.js
Expand Up @@ -16,6 +16,7 @@ export default function () {
}

return {
type: 'module',
...(this.packageConfig
|> pick([
'name',
Expand Down Expand Up @@ -49,7 +50,7 @@ export default function () {
...this.config.packageConfig,
scripts:
commandNames
|> mapValues((nothing, name) =>
|> mapValues((handler, name) =>
this.packageConfig.name === '@dword-design/base'
? `rimraf dist && babel --config-file ${packageName`@dword-design/babel-config`} --copy-files --no-copy-ignored --out-dir dist --ignore "**/*.spec.js" src && node dist/cli.js ${name}`
: `base ${name}`,
Expand Down
48 changes: 14 additions & 34 deletions src/get-generated-files/get-package-config/index.spec.js
Expand Up @@ -2,29 +2,26 @@ import tester from '@dword-design/tester'
import testerPluginTmpDir from '@dword-design/tester-plugin-tmp-dir'
import { execaCommand } from 'execa'
import fs from 'fs-extra'
import outputFiles from 'output-files'

import { Base } from '@/src/index.js'

export default tester(
{
'custom config': async () => {
await fs.outputFile('package.json', JSON.stringify({ type: 'module' }))
commonjs: async () => {
await fs.outputFile('package.json', JSON.stringify({ type: 'commonjs' }))
expect(new Base().getPackageConfig().type).toEqual('commonjs')
},
'custom config': () =>
expect(
new Base({
packageConfig: { main: 'dist/index.scss' },
}).getPackageConfig().main,
).toEqual('dist/index.scss')
},
).toEqual('dist/index.scss'),
deploy: async () => {
await fs.outputFile(
'package.json',
JSON.stringify({ deploy: true, type: 'module' }),
)
await fs.outputFile('package.json', JSON.stringify({ deploy: true }))
expect(new Base().getPackageConfig().deploy).toBeTruthy()
},
async empty() {
await fs.outputFile('package.json', JSON.stringify({}))
empty() {
expect(new Base().getPackageConfig()).toMatchSnapshot(this)
},
async 'existing package'() {
Expand Down Expand Up @@ -66,44 +63,27 @@ export default tester(
expect(new Base().getPackageConfig()).toMatchSnapshot(this)
},
async 'git repo'() {
await fs.outputFile('package.json', JSON.stringify({ type: 'module' }))
await execaCommand('git init')
await execaCommand('git remote add origin git@github.com:bar/foo.git')
expect(new Base().getPackageConfig()).toMatchSnapshot(this)
},
'non-github repo': async () => {
await fs.outputFile('package.json', JSON.stringify({ type: 'module' }))
await execaCommand('git init')
await execaCommand('git remote add origin git@special.com:bar/foo.git')
expect(() => new Base().getPackageConfig()).toThrow(
'Only GitHub repositories are supported.',
)
},
private: async () => {
await fs.outputFile(
'package.json',
JSON.stringify({ private: true, type: 'module' }),
)
await fs.outputFile('package.json', JSON.stringify({ private: true }))
expect(new Base().getPackageConfig().private).toBeTruthy()
},
async 'sub-folder'() {
await outputFiles({
'package.json': JSON.stringify({ type: 'module' }),
test: {},
})
await execaCommand('git init')
await execaCommand('git remote add origin git@github.com:bar/foo.git')
process.chdir('test')
expect(new Base().getPackageConfig()).toMatchSnapshot(this)
},
'types.d.ts': async () => {
await outputFiles({
'package.json': JSON.stringify({ type: 'module' }),
'types.d.ts': '',
})

const packageConfig = new Base().getPackageConfig()
expect(packageConfig.files).toEqual(['dist', 'types.d.ts'])
await fs.outputFile('types.d.ts', '')
expect(new Base().getPackageConfig().files).toEqual([
'dist',
'types.d.ts',
])
},
},
[testerPluginTmpDir()],
Expand Down
6 changes: 4 additions & 2 deletions src/index.js
Expand Up @@ -6,8 +6,8 @@ import depcheckDetectorExeca from 'depcheck-detector-execa'
import depcheckDetectorPackageName from 'depcheck-detector-package-name'
import packageName from 'depcheck-package-name'
import depcheckParserBabel from 'depcheck-parser-babel'
import fs from 'fs-extra'
import jiti from 'jiti'
import loadPkg from 'load-pkg'
import { createRequire } from 'module'
import P from 'path'
import { transform as pluginNameToPackageName } from 'plugin-name-to-package-name'
Expand Down Expand Up @@ -60,7 +60,9 @@ class Base {
if (config.name) {
config.name = pluginNameToPackageName(config.name, 'base-config')
}
this.packageConfig = loadPkg.sync() || {}
this.packageConfig = fs.existsSync('package.json')
? fs.readJsonSync('package.json')
: {}

const defaultConfig = {
allowedMatches: [],
Expand Down
11 changes: 11 additions & 0 deletions src/index.spec.js
@@ -1,3 +1,4 @@
import chdir from '@dword-design/chdir'
import { endent, identity, keys, omit, sortBy } from '@dword-design/functions'
import tester from '@dword-design/tester'
import testerPluginTmpDir from '@dword-design/tester-plugin-tmp-dir'
Expand Down Expand Up @@ -51,6 +52,16 @@ export default tester(
})
expect(new Self().config.readmeInstallString).toEqual(2)
},
'do not recurse up to find package.json': async () => {
await fs.outputFile(
'package.json',
JSON.stringify({ description: 'foo' }),
)
await fs.ensureDir('sub')
await chdir('sub', () => {
expect(new Self().packageConfig.description).toBeUndefined()
})
},
empty: () =>
expect(new Self().config.name).toEqual('@dword-design/base-config-node'),
async 'empty parent'() {
Expand Down

0 comments on commit ef9f6b0

Please sign in to comment.