diff --git a/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.spec.ts b/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.spec.ts index 7ac72170d21c1..549cd334dabba 100644 --- a/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.spec.ts +++ b/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.spec.ts @@ -977,95 +977,40 @@ describe('migrate-converged-pkg generator', () => { }); }); - describe(`npm config setup`, () => { - it(`should update .npmignore config`, async () => { - function getNpmIgnoreConfig(projectConfig: ReadProjectConfiguration) { - return tree.read(`${projectConfig.root}/.npmignore`)?.toString('utf-8'); - } + describe(`npm publish setup`, () => { + it(`should replace .npmignore config with package.json#files`, async () => { + const getNpmIgnoreConfigPath = (projectConfig: ReadProjectConfiguration) => `${projectConfig.root}/.npmignore`; + const projectConfig = readProjectConfiguration(tree, options.name); - let npmIgnoreConfig = getNpmIgnoreConfig(projectConfig); - - expect(npmIgnoreConfig).toMatchInlineSnapshot(` - "*.api.json - *.config.js - *.log - *.nuspec - *.test.* - *.yml - .editorconfig - .eslintrc* - .eslintcache - .gitattributes - .gitignore - .vscode - coverage - dist/storybook - dist/*.stats.html - dist/*.stats.json - dist/demo - fabric-test* - gulpfile.js - images - index.html - jsconfig.json - node_modules - results - src/**/* - !src/**/examples/*.tsx - !src/**/docs/**/*.md - !src/**/*.types.ts - temp - tsconfig.json - tsd.json - tslint.json - typings - visualtests" + const npmIgnoreConfigPath = getNpmIgnoreConfigPath(projectConfig); + + expect(tree.exists(npmIgnoreConfigPath)).toBe(true); + + await generator(tree, options); + + expect(tree.exists(npmIgnoreConfigPath)).toBe(false); + let pkgJson = readJson(tree, `${projectConfig.root}/package.json`); + + expect(pkgJson.files).toMatchInlineSnapshot(` + Array [ + "lib", + "lib-commonjs", + "dist/*.d.ts", + ] `); + updateProjectConfiguration(tree, projectConfig.name!, { ...projectConfig, tags: ['ships-amd'] }); await generator(tree, options); - npmIgnoreConfig = getNpmIgnoreConfig(projectConfig); - - expect(npmIgnoreConfig).toMatchInlineSnapshot(` - ".storybook/ - .vscode/ - bundle-size/ - config/ - coverage/ - docs/ - etc/ - node_modules/ - src/ - stories/ - dist/types/ - temp/ - __fixtures__ - __mocks__ - __tests__ - - *.api.json - *.log - *.spec.* - *.cy.* - *.test.* - *.yml - - # config files - *config.* - *rc.* - .editorconfig - .eslint* - .git* - .prettierignore - .swcrc - project.json - - # exclude gitignore patterns explicitly - !lib - !lib-commonjs - !lib-amd - !dist/*.d.ts - " + pkgJson = readJson(tree, `${projectConfig.root}/package.json`); + + expect(pkgJson.files).toMatchInlineSnapshot(` + Array [ + "lib", + "lib-commonjs", + "lib-amd", + "dist/*.d.ts", + ] `); }); }); @@ -1606,42 +1551,7 @@ function setupDummyPackage( jestSetupFile: stripIndents` /** Jest test setup file. */ `, - npmConfig: stripIndents` - *.api.json - *.config.js - *.log - *.nuspec - *.test.* - *.yml - .editorconfig - .eslintrc* - .eslintcache - .gitattributes - .gitignore - .vscode - coverage - dist/storybook - dist/*.stats.html - dist/*.stats.json - dist/demo - fabric-test* - gulpfile.js - images - index.html - jsconfig.json - node_modules - results - src/**/* - !src/**/examples/*.tsx - !src/**/docs/**/*.md - !src/**/*.types.ts - temp - tsconfig.json - tsd.json - tslint.json - typings - visualtests - `, + npmConfig: stripIndents``, babelConfig: { ...normalizedOptions.babelConfig, }, diff --git a/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.ts b/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.ts index 1029e888ab4c3..086586e5217a3 100644 --- a/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.ts +++ b/tools/workspace-plugin/src/generators/migrate-converged-pkg/index.ts @@ -140,7 +140,6 @@ function runMigrationOnProject(tree: Tree, schema: AssertedSchema, _userLog: Use setupCypress(tree, options); - setupNpmIgnoreConfig(tree, options); setupBabel(tree, options); updateNxProject(tree, options); @@ -594,12 +593,6 @@ function updateNxProject(tree: Tree, options: NormalizedSchema) { return tree; } -function setupNpmIgnoreConfig(tree: Tree, options: NormalizedSchema) { - tree.write(options.paths.npmConfig, templates.npmIgnoreConfig); - - return tree; -} - function setupSwcConfig(tree: Tree, options: NormalizedSchema) { const swcConfig = templates.swcConfig(); writeJson(tree, joinPathFragments(options.projectConfig.root, '.swcrc'), swcConfig); @@ -693,6 +686,7 @@ function updatePackageJson(tree: Tree, options: NormalizedSchemaWithTsConfigs) { packageJson = setupScripts(packageJson); packageJson = setupExportMaps(packageJson); packageJson = addSwcHelpers(packageJson); + packageJson = setupNpmPublishFiles(packageJson); writeJson(tree, options.paths.packageJson, packageJson); @@ -739,13 +733,27 @@ function updatePackageJson(tree: Tree, options: NormalizedSchemaWithTsConfigs) { return './' + path.posix.normalize(entryPath); } } -} -//TODO: remove after migration to swc transpilation is complete -function addSwcHelpers(json: PackageJson) { - delete json.dependencies?.tslib; - json.dependencies = { ...json.dependencies, '@swc/helpers': '^0.4.14' }; - return json; + //TODO: remove after migration to swc transpilation is complete + function addSwcHelpers(json: PackageJson) { + delete json.dependencies?.tslib; + json.dependencies = { ...json.dependencies, '@swc/helpers': '^0.5.1' }; + return json; + } + + function setupNpmPublishFiles(json: PackageJson) { + json.files = json.files ?? []; + json.files = [ + 'lib', + 'lib-commonjs', + options.projectConfig.tags?.includes('ships-amd') ? 'lib-amd' : '', + 'dist/*.d.ts', + ].filter(Boolean); + + tree.delete(options.paths.npmConfig); + + return json; + } } function updateApiExtractor(tree: Tree, options: NormalizedSchemaWithTsConfigs) { diff --git a/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.spec.ts b/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.spec.ts index 8fd0790d490b7..5e486c3031a64 100644 --- a/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.spec.ts +++ b/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.spec.ts @@ -9,10 +9,11 @@ import { logger, readNxJson, NxJsonConfiguration, + readJson, } from '@nx/devkit'; import type { Linter } from 'eslint'; -import type { TsConfig } from '../../types'; +import type { PackageJson, TsConfig } from '../../types'; import generator from './index'; import { MigrateV8PkgGeneratorSchema } from './schema'; @@ -65,50 +66,24 @@ describe('migrate-v8-pkg generator', () => { }); describe(`--name`, () => { - it(`should setup .npmignore`, async () => { - await generator(tree, options); + describe(`npm publish setup`, () => { + it(`should replace .npmignore config with package.json#files`, async () => { + expect(tree.exists(`packages/eight/.npmignore`)).toBe(true); - expect(tree.read(`packages/eight/.npmignore`, 'utf-8')).toMatchInlineSnapshot(` - "*.api.json - *.config.js - *.log - *.nuspec - *.test.* - *.yml - .editorconfig - .eslintrc* - .eslintcache - .gitattributes - .gitignore - .vscode - coverage - dist/storybook - dist/*.stats.html - dist/*.stats.json - dist/demo - fabric-test* - gulpfile.js - images - index.html - jsconfig.json - node_modules - results - src/**/* - !src/**/*.types.ts - temp - tsconfig.json - tsd.json - tslint.json - typings - visualtests - project.json + await generator(tree, options); - # exclude gitignore patterns explicitly - !lib - !lib-commonjs - !lib-amd - !dist" - `); + expect(tree.exists(`packages/eight/.npmignore`)).toBe(false); + + const pkgJson = readJson(tree, `packages/eight/package.json`); + expect(pkgJson.files).toMatchInlineSnapshot(` + Array [ + "lib", + "lib-commonjs", + "lib-amd", + "dist", + ] + `); + }); }); }); @@ -244,40 +219,7 @@ function setupDummyPackage( // Configure enzyme. configure({ adapter: new Adapter() }); `, - npmConfig: stripIndents` - *.api.json - *.config.js - *.log - *.nuspec - *.test.* - *.yml - .editorconfig - .eslintrc* - .eslintcache - .gitattributes - .gitignore - .vscode - coverage - dist/storybook - dist/*.stats.html - dist/*.stats.json - dist/demo - fabric-test* - gulpfile.js - images - index.html - jsconfig.json - node_modules - results - src/**/* - !src/**/*.types.ts - temp - tsconfig.json - tsd.json - tslint.json - typings - visualtests - `, + npmConfig: stripIndents``, }; if (typeof normalizedOptions.eslintConfig === 'string') { diff --git a/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.ts b/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.ts index 652c4008fcac6..af75d92adeaa6 100644 --- a/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.ts +++ b/tools/workspace-plugin/src/generators/migrate-v8-pkg/index.ts @@ -10,6 +10,7 @@ import { ProjectConfiguration, stripIndents, updateProjectConfiguration, + writeJson, } from '@nx/devkit'; import { printStats } from '../print-stats'; @@ -198,16 +199,27 @@ function runMigrationOnProject(tree: Tree, schema: AssertedSchema) { // updates start - setupNpmIgnoreConfig(tree, options); + updatePackageJson(tree, options); updateNxProject(tree, options); return tree; } -function setupNpmIgnoreConfig(tree: Tree, options: NormalizedSchema) { - tree.write(options.paths.npmConfig, templates.npmIgnoreConfig); +function updatePackageJson(tree: Tree, options: NormalizedSchema) { + let packageJson = readJson(tree, options.paths.packageJson); - return tree; + packageJson = setupNpmPublishFiles(packageJson); + + writeJson(tree, options.paths.packageJson, packageJson); + + function setupNpmPublishFiles(json: PackageJson) { + json.files = json.files ?? []; + json.files = ['lib', 'lib-commonjs', 'lib-amd', 'dist']; + + tree.delete(options.paths.npmConfig); + + return json; + } } function updateNxProject(tree: Tree, options: NormalizedSchema) { @@ -221,49 +233,7 @@ function updateNxProject(tree: Tree, options: NormalizedSchema) { return tree; } -const templates = { - npmIgnoreConfig: stripIndents` -*.api.json -*.config.js -*.log -*.nuspec -*.test.* -*.yml -.editorconfig -.eslintrc* -.eslintcache -.gitattributes -.gitignore -.vscode -coverage -dist/storybook -dist/*.stats.html -dist/*.stats.json -dist/demo -fabric-test* -gulpfile.js -images -index.html -jsconfig.json -node_modules -results -src/**/* -!src/**/*.types.ts -temp -tsconfig.json -tsd.json -tslint.json -typings -visualtests -project.json - -# exclude gitignore patterns explicitly -!lib -!lib-commonjs -!lib-amd -!dist -`, -}; +const _templates = {}; function uniqueArray(value: T[]) { return Array.from(new Set(value)); diff --git a/tools/workspace-plugin/src/generators/react-library/files/.npmignore__tmpl__ b/tools/workspace-plugin/src/generators/react-library/files/.npmignore__tmpl__ deleted file mode 100644 index a5817be2414de..0000000000000 --- a/tools/workspace-plugin/src/generators/react-library/files/.npmignore__tmpl__ +++ /dev/null @@ -1,38 +0,0 @@ -.storybook/ -.vscode/ -bundle-size/ -config/ -coverage/ -docs/ -etc/ -node_modules/ -src/ -stories/ -dist/types/ -temp/ -__fixtures__ -__mocks__ -__tests__ - -*.api.json -*.log -*.spec.* -*.cy.* -*.test.* -*.yml - -# config files -*config.* -*rc.* -.editorconfig -.eslint* -.git* -.prettierignore -.swcrc -project.json - -# exclude gitignore patterns explicitly -!lib -!lib-commonjs -!lib-amd -!dist/*.d.ts diff --git a/tools/workspace-plugin/src/generators/react-library/files/package.json__tmpl__ b/tools/workspace-plugin/src/generators/react-library/files/package.json__tmpl__ index 926a7e40bd2b0..7f8f2b41dfd0c 100644 --- a/tools/workspace-plugin/src/generators/react-library/files/package.json__tmpl__ +++ b/tools/workspace-plugin/src/generators/react-library/files/package.json__tmpl__ @@ -7,6 +7,7 @@ "module": "lib/index.js", "typings": "./dist/index.d.ts", "sideEffects": false, + "files": ["lib", "lib-commonjs", "dist/*.d.ts"], "repository": { "type": "git", "url": "https://github.com/microsoft/fluentui" diff --git a/tools/workspace-plugin/src/generators/react-library/index.spec.ts b/tools/workspace-plugin/src/generators/react-library/index.spec.ts index 1201159d7ff89..58d391e4f5393 100644 --- a/tools/workspace-plugin/src/generators/react-library/index.spec.ts +++ b/tools/workspace-plugin/src/generators/react-library/index.spec.ts @@ -53,7 +53,6 @@ describe('react-library generator', () => { "project.json", ".babelrc.json", ".eslintrc.json", - ".npmignore", ".storybook", ".swcrc", "LICENSE", @@ -189,7 +188,6 @@ describe('react-library generator', () => { "project.json", ".babelrc.json", ".eslintrc.json", - ".npmignore", ".storybook", ".swcrc", "LICENSE", diff --git a/tools/workspace-plugin/src/types.ts b/tools/workspace-plugin/src/types.ts index 397c9971825fc..155963fa68c7e 100644 --- a/tools/workspace-plugin/src/types.ts +++ b/tools/workspace-plugin/src/types.ts @@ -24,6 +24,7 @@ export interface PackageJson { types?: string; typings?: string; private?: boolean; + files?: string[]; name: string; main: string; module?: string;